Разделение проблем - Управление 2 зависимыми объектами с помощью службы? - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть две службы: ProfileService знает, как манипулировать Profile моделями (laravel eloquent), и ListService знает, как манипулировать List моделями.Profile имеет отношение один ко многим с List.Отношения определяются в этих красноречивых моделях.

У меня есть вопрос о разделении интересов.Я намерен разрешить ProfileService делать вещи только с Profile и ListService только с List.

Какой тип шаблона проектирования или конструкции мне понадобится сделать, соблюдая при этом следующее требование?

  • Мне нужен метод destroyProfile для объекта Profile, который может удалить Profile и привести к удалению связанных с ним List.

Я думаю, что мне нужен третий сервис, который ProfileService может использовать для удаления обеих моделей.

1 Ответ

0 голосов
/ 01 марта 2019

Почему бы не позволить базе данных обрабатывать удаления?

    Schema::table('lists', function (Blueprint $table) {
        $table->unsignedInteger('profile_id');
        $table->foreign('profile_id')
            ->references('id')
            ->on('profiles')
            ->onDelete('cascade');
    });
...