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

路由中定义:

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 模型事件几种用法相关推荐

  1. 安卓中radiobutton不进入监听事件_Laravel模型事件的实现原理详解

    模型事件在 Laravel 的世界中,你对 Eloquent 大多数操作都会或多或少的触发一些模型事件,下面这篇文章主要给大家介绍了关于Laravel模型事件的实现原理,文中通过示例代码介绍的非常详细 ...

  2. cordova监听事件中调用其他方法_Laravel模型事件的实现原理详解

    模型事件在 Laravel 的世界中,你对 Eloquent 大多数操作都会或多或少的触发一些模型事件,下面这篇文章主要给大家介绍了关于Laravel模型事件的实现原理,文中通过示例代码介绍的非常详细 ...

  3. php 框架源码分析,Laravel框架源码解析之模型Model原理与用法解析

    本文实例讲述了Laravel框架源码解析之模型Model原理与用法.分享给大家供大家参考,具体如下: 前言 提前预祝猿人们国庆快乐,吃好.喝好.玩好,我会在电视上看着你们. 根据单一责任开发原则来讲, ...

  4. uni-app watch事件监听三种用法

    1.普通监听(无法监听到第一次绑定的变化) <input type="text" v-model="userName"/> //监听 当userNa ...

  5. Javascript自定义事件功能与用法实例分析

    原文地址:https://www.jb51.net/article/127776.htm 本文实例讲述了javascript自定义事件功能与用法.分享给大家供大家参考,具体如下: 概述 自定义事件很难 ...

  6. Vue——基本的代码结构和插值表达式、v-cloak||Vue指令之v-text和v-html||v-bind的三种用法||Vue指令之v-on

    Vue的基本代码 <!DOCTYPE html> <html lang="en"><head><meta charset="UT ...

  7. Java中final关键字的几种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面大家跟随动力节点java ...

  8. 语句作用_3分钟短文:Laravel模型作用域,为你“节省”更多代码

    引言 原则上代码写一次,处处是引用,不需要大量的冗余代码,这是一种趋势,也是提高代码健壮性的努力方向. laravel模型为我们提供了一层数据库操作层,将数据交互独立出来. 但是久而久之,随着项目的需 ...

  9. Java提高篇 —— Java关键字之final的几种用法

    一.前言 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下 ...

最新文章

  1. 将Eclipse代码导入到AndroidStudio的两种方式
  2. Python多线程之构建线程池
  3. Redis安装部署配置说明
  4. android吸附菜单,Android仿微博、人人Feed详情页吸附导航栏
  5. Visual Studio 2017 15.6发布
  6. String s = new String(123) 究竟创建了几个对象
  7. Initialization failed for ‘https://start.spring.io‘ Please check URL, network and proxy settings.
  8. 各个阶级的前端 必须掌握的基本技能汇总
  9. SpringCloud学习笔记012---SpringBoot启动时Caused by: java.lang.NoClassDefFoundError:
  10. 使用struts2 做客户端校验时抛出freemarker模版错误异常的处理
  11. 编码基本功:遇到打印问题怎么办
  12. C# 将word/ppt文档转换为Pdf的三种方法
  13. 用pandas进行数据分析实战
  14. 显示远程计算机或设备将不接受连接的解决办法
  15. SpringBoot 实现Excel文件解析
  16. Python基础知识学习笔记(一)
  17. 锐捷S6248三层交换机syslog配置
  18. echarts改变字体颜色
  19. 使用malloc为指针分配内存空间
  20. 判断iOS6/iOS7, 3.5inch/4.0inch

热门文章

  1. linux shell常用函数,ps
  2. .NET+Oracle 9i时产生的未在本地计算机上注册“OraOLEDB.Oracle.1”提供程序
  3. STM32F103/429串口IAP+Ymodem升级
  4. 早上收到这样一份通知,求一无漏洞框架,无力吐槽
  5. JS对象 - Array属性方法汇总
  6. Tomcat Maven插件分环境运行配置
  7. 转Spring+Hibernate+EHcache配置(二)
  8. 基于三层结构的CRM系统(Agent X)的设计和开发
  9. [CSharp]用VSS还是TFS呢?
  10. 大数据可视化设计需遵守什么原则