laravel学习笔记之模型事件有什么用-创新互联

这篇文章主要为大家展示了“laravel学习笔记之模型事件有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“laravel学习笔记之模型事件有什么用”这篇文章吧。

10年积累的成都做网站、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有织金免费网站建设让你可以放心的选择与我们合作。

用法示例

一 、简单粗鲁(用于本地测试)


路由中定义:

Event::listen('eloquent.updated: App\Post',function (){
 dump('测试一下修改事件');
});
Route::post('/post/{id}', 'PostController@update');

二 、生成事件和监听器


在 EventServiceProvider 定义对应关系

 protected $listen = [
  'App\Events\PostEvent' => [
    'App\Listeners\PostListener',
   ],
 ];
php artisan event:generate //生成文件

event 中注入要操作的类


listen 中handle 方法注入对应事件类


 public function handle(PostEvent $event)
 {
  dump('测试一下修改事件');
 }

最后在 post 模型中添加 'events' 属性

 protected $events = [
   'updated' => PostListener::class
 ];

三 、利用框架的 boot 方法


直接在相关 Model 中定义


 public static function boot() {
  parent::boot();
  
  static::updated(function($model) {
   dump('测试一下修改事件');
  });
 }

四 、定义Trait


如果想对多个模型的updated 或 created 事件进行一些操作,该不会每个模型都单独写一个吧.例如: 日志 .


trait LogRecord
{
 //注意,必须以 boot 开头
 public static function bootLogRecord()
 {
  foreach(static::getModelEvents() as $event) {
   static::$event(function ($model){
    $model->setRemind();
   });
  }
 }


 public static function getModelEvents()
 {
  if(isset(static::$recordEvents)){
   return static::$recordEvents;
  }
  return ['updated'];
 }

 public function setRemind()
 {
  dump('记录逻辑操作');
 }
}

然后,在模型中use trait 就可以了.


      • creating - 对象已经 ready 但未写入数据库


      • created - 对象已经写入数据库


      • updating - 对象已经修改但未写入数据库


      • updated - 修改已经写入数据库


      • saving - 对象创建或者已更新但未写入数据库


      • saved - 对象创建或者更新已经写入数据库


      • deleting - 删除前


      • deleted - 删除后


      • restoring - 恢复软删除前


      • restored - 恢复软删除后

以上是“laravel学习笔记之模型事件有什么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


本文标题:laravel学习笔记之模型事件有什么用-创新互联
URL标题:http://scyanting.com/article/dgddcs.html