在多个记录上触发Laravel观察者

时间:2018-01-22 16:39:55

标签: laravel laravel-5 eloquent

每当我的模型被删除/更新/保存时,我一直在使用Laravel Observers来处理我的app逻辑。我注意到在某些情况下这些观察者不会被触发。例如,如果我使用

Model::where(active,1)->update([some stuff]);

观察员永远不会被触发。必须获取所有记录并在每个实例上运行forloop并调用update是非常烦人的。有没有办法解决这个问题?还是有任何好的做法来处理这些情况?

2 个答案:

答案 0 :(得分:0)

执行此操作时:

Model::where(active,1)->update([some stuff]);

执行查询构建器的update()方法而不是Eloquent的update()方法。

如果要触发Eloquent事件,则需要逐个更新行。

答案 1 :(得分:0)

改为事件和侦听器?您可以运行原始或查询构建器的更新,在事件中传递那些受影响的行。