@devOnMan

Как удалить в репозитории Laravel?

Две модели:
Category - id,title
CategoryDescription - category_id, description, slug

Есть базовый репозиторий
abstract class BaseRepository implements RepositoryInterface
{
    protected $model;
    protected $with = [];

    public function create(array $attributes): Model
    {
        $model = $this->model->create($attributes);
        return $model;
    }

    public function update(int $id, array $attributes): void
    {
        $this->model->find($id)->update($attributes);
    }

    public function updateOrCreate(int $id, array $attributes): void
    {
        $this->model->updateOrCreate(['id' => $id], $attributes);
    }

    public function find(int $id): ?Model
    {
        return $this->model->find($id);
    }

    public function delete(int $id): void
    {
        $this->model->find($id)->delete();
    }

    public function with($relations)
    {
        if (is_string($relations)) {
            $this->with = explode(',', $relations);
            return $this;
        }

        $this->with = is_array($relations) ? $relations : [];

        return $this;
    }

    protected function query()
    {
        return $this->model->newQuery()->with($this->with);
    }
}

есть репозиторий категории CategoryRepository и репозиторий описаний для категории CategoryDescriptionRepository

Маршрут имеет такую структуру
Route::prefix('category')->group(function () {
                Route::get('/', [CategoryController::class, 'index']);
                Route::post('/', [CategoryController::class, 'store']);
                Route::prefix('{id}')->group(function () {
                    Route::get('/', [CategoryController::class, 'show']);
                    Route::put('/', [CategoryController::class, 'update']);
                    Route::delete('/', [CategoryController::class, 'destroy']);
                    Route::prefix('description')->group(function () {
                        Route::get('/', [CategoryDescriptionController::class, 'index']);
                        Route::post('/', [CategoryDescriptionController::class, 'store']);
                        Route::get('/{descriptionId}', [CategoryDescriptionController::class, 'show']);
                        Route::put('/{descriptionId}', [CategoryDescriptionController::class, 'update']);
                        Route::delete('/{descriptionId}', [CategoryDescriptionController::class, 'destroy']);
                    });
                });
            });

как правильно в репозитории CategoryDescriptionRepository сделать удаление с проверкой, чтобы проверить id описания и категорию к которой оно привязана
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
@jazzus
$categoryDescription->delete();
для действий, связанных с данным событием использовать обсервер.
Для удаления связанных сущностей on delete cascade.
Только спрятать в глубинах и сетях репозиториев, чтобы этот говнокод ларавелевский никто не нашел.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Kostik_1993
Fullstack Web Developer | PHP | Laravel | Vue.js
как правильно в репозитории CategoryDescriptionRepository сделать удаление с проверкой, чтобы проверить id описания и категорию к которой оно привязана
В репозитории хотите проверять прям?)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы