laravel学习笔记之模型事件的几种用法示例
前言
本文主要给大家介绍了关于laravel模型事件用法的相关内容,文中通过示例代码介绍了laravel模型事件的多种用法,狼蚁网站SEO优化话不多说了,来一起看看详细的介绍吧。
用法示例
一 、简单粗鲁(用于本地测试)
路由中定义:
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 - 恢复软删除后
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对狼蚁SEO的支持。
编程语言
- 宿迁百度关键词排名指南:实现精准营销的关键
- 四川SEO优化怎么做网络推广
- 立昂技术备案老域名收购:如何为您的业务赋能
- 安徽百度关键词seo贵不贵,一般需要多少钱
- 吉林百度快照排名怎么做电话营销
- 多伦新手做SEO怎么做
- 甘肃优化关键词排名推广怎么做论坛营销
- 沙雅SEO网站推广:提升您的在线可见性
- 四川SEO优化如何提升销售额和销售量
- 聂荣网站排名优化:提升网站可见性的全方位指
- 涞水SEO:提升地方企业在线可见性的策略
- 辽宁百度seo排名怎样做网站排名
- 临湘哪有关键词排名优化:提升网站可见度的关
- 黑龙江百度网站优化有没有优惠
- 凉城优化关键词排名推广:提升您的网络可见性
- 萝北整站优化:提升您网站流量和排名的全面指