雄辩的更新和事件观察员

时间:2018-02-23 12:12:12

标签: laravel lumen

我正在使用流明制作API。我正在尝试更新条目并解雇更新的观察者。 到目前为止我尝试了什么

$data = [];
$fota_device = Fota_device::find($deviceId);
$fota_device->update($data);

此代码不会更新数据库或触发更新事件。

$data = [];
$fota_device = Fota_device::where('id', $deviceId);
$fota_device->update($data);

此代码更新数据库,但也不会触发事件。 我已经读过,雄辩不会在大规模分配上发生更新事件,但这种方式之一至少应该触发事件,但事实并非如此。

我的观察员

public function updated(Device $device)
{
    dd($fota_device);
    $user = Auth::user();
    $action = Users_action::create([
        'userId' => $user->id, 
        'created_at' => \Carbon\Carbon::now()->toDateTimeString()
    ]);
}

为什么第一个代码示例不更新表中的条目,为什么观察者不会被解雇?

1 个答案:

答案 0 :(得分:3)

update上,它仅触发:savingsaved,当它没有修改任何内容时;

这不会触发update事件,因为它是mass update

$fota_device = Fota_device::where('id', $deviceId)->update(['fieldName' => $value]);

如果$value与数据库中的值不同,则会触发更新事件:

User::find($id)->update(['fieldName' => $value]);

在您的情况下,$data = [];是空数组,并且它没有修改(更新)任何内容;