在Laravel Observer中不跟踪诸如创建,更新,删除之类的雄辩事件

时间:2019-01-02 12:56:31

标签: php laravel laravel-5

我在模型User上有一个问题,我正在插入记录批量,但是观察者在这些情况下不起作用,它不会检测到它的create,update,delete事件,但是如果我使用create,那么它可以完美地工作,并且其他任何工作都可以接受。如果在这些情况下有任何帮助,将不胜感激。

模型App / User.php

$raw_data = [
    [
        'name' => 'stackoverflow'
    ],
    [
        'name' => 'stackoverflow1'
    ],

];

User::insert($raw_data);

2 个答案:

答案 0 :(得分:1)

这是因为未触发保存 updated 事件(批量更新时)。请参阅doc

  

通过Eloquent发布批量更新时,不会为已更新的模型触发已保存和已更新的模型事件。这是因为发布批量更新时从未真正检索过模型。

您无能为力。除非您使用循环进行创建。

答案 1 :(得分:0)

正如@salah所说,进行大规模操作时无法触发事件。作为解决方法,您可以尝试:

$raw_data = [
    [
        'name' => 'Jane Doe'
    ],
    [
        'name' => 'John Doe'
    ],
];

collect($raw_data)
    ->each(function ($data) {
        User::create($data);
    });