1、 事件很重要、与第三方存储交互更优雅和解耦代码。
2、使用jobtest表可以测试写法是否触发模型事件。
3、使用模型事件用来更新缓存、记录操作日志、更新elasticsearch、用来加速查询。
通常不触发原因有:使用查询构造器的操作、模型的批量修改、模型批量删除不会触发模型事件,
不触发的方式#
//查询构造器
User::where('id', 1)->delete();
$deletedRows = App\Flight::where('active', 0)->delete();
可以触发的方式#
$flight = App\Flight::find(1);
$flight->delete();
// 或者
App\Flight::destroy(1);
App\Flight::destroy([1, 2, 3]);
App\Flight::destroy(1, 2, 3);
$user = User::find(1);
$user->delete();
// 或者
User::destroy(1);
User::destroy([1, 2]);
批量操作可以使用循环
https://d.laravel-china.org/docs/5.5/eloquent#deleting-models
网友评论