1.简单粗暴(针对本地测试)定义在route中:Event::listen('eloquent.updated:App\Post',function(){dump('测试修改后的事件');});Route::post('/post/{id}','PostController@update');2.生成事件和监听器在EventServiceProvider中定义对应关系protected$listen=['App\Events\PostEvent'=>['App\Listeners\PostListener',],];phpartisanevent:generate//注入生成的文件事件进入要操作的类listen,将handle方法注入对应的事件类publicfunctionhandle(PostEvent$event){dump('测试修改事件');最后,将'events'属性protected$events=['updated'=>PostListener::class]添加到post模型;3.使用框架的boot方法直接在相关Model()中定义publicstaticfunctionboot(){parent::boot;static::updated(function($model){dump('测试修改事件');});}四、定义Trait如果要对多个模型的更新或创建的事件进行一些操作,不应该为每个模型写一个。例如:log.traitLogRecord{//注意,必须以boot开头publicstaticfunctionbootLogRecord(){foreach(static::getModelEvents()as$event){static::$event(函数($model){$model->setRemind();});}}publicstaticfunctiongetModelEvents(){if(isset(static::$recordEvents)){returnstatic::$recordEvents;}返回['更新'];}publicfunctionsetRemind(){dump('记录逻辑操作');}}然后,在模型中使用trait。?creating-对象已准备好但未写入数据库?created-对象已写入数据库?updating-对象已修改但未写入数据库updated-修改已写入数据库saving-对象已创建或更新但尚未写入数据库?保存-对象已创建或更新已写入数据库?删除-删除前?删除-删除后?恢复-恢复前软删除?恢复-恢复软删除后
