Laravel观察者无法批量插入

时间:2019-02-26 05:48:47

标签: php laravel observable

我必须批量保存数据。数据正在保存,但观察者无法正常工作。我尝试了观察者的所有方法(创建,创建,保存,保存),但没有响应。

foreach( $departments as $department) {
         $data[] = [
             'department_id' => $department,
             'name'          => $name,
             'description'   => $description,
         ];
}

if(count($data) > 0) {
   JobDescription::insert($data);
}

namespace App\Observers;
use Auth;

class JobDescriptionObserver
{
    public function created($model)
    {
        echo 'created';
        die;
     }
}

1 个答案:

答案 0 :(得分:2)

此行为是预期的,并以红色警告记录:

  

通过Eloquent发布批量更新时,savedupdated   对于更新的模型,不会触发模型事件。这是因为   发出批量更新时,从不实际检索模型。

     

https://laravel.com/docs/5.7/eloquent#events

这是因为Eloquent为批量插入/更新语句生成的基础SQL查询是非常不同的,并且不允许其获取行ID。

如果需要事件,则必须一个一个地保存模型:

foreach($departments as $department) {
        Jobdescription::create([
             'department_id' => $department,
             'name'          => $name,
             'description'   => $description,
         ]);
}