如何反映用于模型集合的Laravel Delete Observer?

时间:2019-06-07 09:08:36

标签: php laravel laravel-5 eloquent

我有一个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 个答案:

答案 0 :(得分:1)

如果要使用删除观察器,则必须获取模型实例,然后将其删除

$subTasks = Task::where('parent_id', $task->id)->get(['id']);
foreach($subTasks as $subTask){
    $deleteSubTask = $subTask->delete();
}