Как отразить Laravel Delete Observer для коллекции моделей? - PullRequest
1 голос
/ 07 июня 2019

У меня есть класс TaskObserver, который записывает действия.

Когда я пытаюсь удалить задачу, используя

:: find ()

функция, это отражается в наблюдателе удаления задачи.

$task = Task::find($id);
$task->delete();

Когда я пытаюсь удалить коллекцию, используя

$task = Task::find($id);
$subTasks = Task::where('parent_id', $task->id)->delete();

Она не отражает наблюдателя удаления для каких-либо подзадач.

Да, я искал и нашел Laravel Event Observer .Он говорит использовать метод :: find (), чтобы он отражался в наблюдателе.

Должен ли я перебрать все подзадачи и использовать метод :: find ()?

$subTasksId = Task::where('parent_id', $task->id)->pluck('id');
foreach($subTasksId as $subTaskId){
    $deleteSubTask = Task::find($subTask)->delete();
}

1 Ответ

1 голос
/ 07 июня 2019

Если вы хотите использовать Delete обозреватель, вы должны получить экземпляр модели, а затем удалить его

$subTasks = Task::where('parent_id', $task->id)->get(['id']);
foreach($subTasks as $subTask){
    $deleteSubTask = $subTask->delete();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...