模型事件
首先,从手册上,我们可以知道模型支持以下事件:

事件                描述 事件方法名after_read     查询后 onAfterRead
before_insert   新增前 onBeforeInsert
after_insert    新增后 onAfterInsert
before_update   更新前 onBeforeUpdate
after_update    更新后 onAfterUpdate
before_write    写入前 onBeforeWrite
after_write     写入后 onAfterWrite
before_delete   删除前 onBeforeDelete
after_delete    删除后 onAfterDelete
before_restore  恢复前 onBeforeRestore
after_restore   恢复后 onAfterRestore
<?php
namespace app\model;use think\Model;
use think\model\concern\SoftDelete;class Users extends Model
{// 软删除use SoftDelete;public static function onAfterRead($user) {dump('查询后');}public static function onBeforeInsert($user) {dump('新增前');}public static function onAfterInsert($user) {dump('新增后');}public static function onBeforeUpdate($user) {dump('更新前');}public static function onAfterUpdate($user) {dump('更新后');}public static function onBeforeWrite($user) {dump('写入前');}public static function onAfterWrite($user) {dump('写入后');}public static function onBeforeDelete($user) {dump('删除前');}public static function onAfterDelete($user) {dump('删除后');}public static function onBeforeRestore($user) {dump('恢复前');}public static function onAfterRestore($user) {dump('恢复后');}
}

方法

$data = ['name' => 'test','phone' => '13888888888','area' => '0','address' => '广东省韶关市','balance' => '0','password' => '0','status' => '0','last' => '2019-01-01 00:00:00',
];dump('Users::create($data)');
$users = Users::create($data);dump('Users::insert($data)');
Users::insert($data);dump('Users::where(\'id\', $users)->update([\'area\' => 1])');
Users::where('id', $users['id'])->update(['area' => 1]);dump('$users->save([\'area\' => 2])');
$users->save(['area' => 2]);dump('Users::where(\'id\', $users[\'id\'])->delete()');
Users::where('id', $users['id'])->delete();dump('Users::where(\'1=1\')->find()');
$users = Users::where('id', '>', 0)->find();dump('Users::destroy($users[\'id\'])');
Users::destroy($users['id']);dump('$users->restore()');
$users->restore();dump('$users->delete()');
$users->delete();

测试

^ "Users::create($data)"
^ "写入前"
^ "新增前"
^ "新增后"
^ "写入后"
^ "Users::insert($data)"
^ "Users::where('id', $users)->update(['area' => 1])"
^ "$users->save(['area' => 2])"
^ "写入前"
^ "更新前"
^ "更新后"
^ "写入后"
^ "Users::where('id', $users['id'])->delete()"
^ "Users::where('1=1')->find()"
^ "查询后"
^ "Users::destroy($users['id'])"
^ "查询后"
^ "删除前"
^ "删除后"
^ "$users->restore()"
^ "恢复前"
^ "恢复后"
^ "$users->delete()"
^ "删除前"
^ "删除后"

总结

create()
模型创建数据方法,会触发写入前、新增前、新增后、写入后。使用模型的save()和saveAll()来新增方法也会触发这几个事件。insert()
insert()是Db类的方法,不是模型方法,不会触发模型事件。update()
update()是Db类的方法,不是模型方法,不会触发模型事件。save()
使用模型的save()方法来更新数据,会触发写入前、更新前、更新后、写入后事件。delete()
如果是使用模型方法查询出来数据,然后再删除数据,则会触发删除前、删除后事件。
如果是直接使用条件删除,则不会触发模型事件。因为直接使用条件删除,这时候的delete()方法不是模型方法。find()
该查询方法会触发查询后事件destroy()
该删除数据方法会触发查询后、删除前、删除后。所以,该方法是先查询出数据,然后再删除该数据。restore()
该软删除恢复方法会触发恢复前、恢复后方法

thinkph6模型事件相关推荐

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

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

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

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

  3. tp3 php钩子函数,thinkphp模型事件(钩子函数:模型中在增删改等操作前后自动执行的事件)...

    thinkphp模型事件(钩子函数:模型中在增删改等操作前后自动执行的事件) 一.总结 1.通过模型事件(钩子函数),可以在插入更新删除等前后执行一些特定的功能 2.模型事件是写在模型里面的,控制器中 ...

  4. tp6取消了模型的自动完成,可使用模型事件代替

    记录:tp6模型的自动完成功能已经取消,请使用模型事件代替. tp5版本时可使用框架的自动完成功能,示例: 模型文件:model/User.php //数据自动完成指在不需要手动赋值的情况下对字段的值 ...

  5. 【插件开发】—— 13 GEF双击模型事件

    前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图 4 SWT编程须知 5 SWT简单控件的使用与布局搭配 6 SWT复杂空间与布局搭配 7 SWT布局详解 ...

  6. js 事件模型 + ( 事件类型 )

    Dom事件 事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信.DOM支持大量的事件 (一) EventTarget接口 DOM的事件操作(监听和触发),都定义在EventTarget接 ...

  7. laravel 模型事件几种用法

    一 .简单粗鲁(用于本地测试) 路由中定义: Event::listen('eloquent.updated: App\Post',function (){dump('测试一下修改事件'); }); ...

  8. JS基础-事件模型(事件事件流自定义事件事件冒泡/代理)

    文章目录 一.事件与事件流 二.事件模型 1.DOM0级模型 2.IE事件模型 3.DOM2级模型 4.DOM3级事件处理方式 三.事件对象 四.事件绑定与解除 1.事件绑定 1.1对象.on事件名字 ...

  9. VTK+Python学习 ① 官方教程学习:渲染模型,监听模型事件,多个渲染视窗,渲染多个模型,与渲染模型交互,模型拉伸变换

    一.利用VTK渲染模型 1.1 VTK渲染模型流程: ① 模型数据导入 # 获取一个Cone(圆锥)模型 cone = vtkConeSource() ② 数据通过Mapper转换为几何图元 # 创建 ...

最新文章

  1. nagios利用pyfetion报警最新
  2. JDBC学习笔记03【JDBC事务管理、数据库连接池、JDBCTemplate】
  3. 任意长度的高精度大整数加法
  4. Hadoop(MapR)分布式安装及自动化脚本配置
  5. matlab配置VLFeat
  6. Python 正则表达式大全,值得收藏
  7. 京东全球购与花王达成区块链溯源合作
  8. 二手交易app开发可以定制哪些功能
  9. 【陪客户领导吃饭四部曲】
  10. 用树莓派做电视盒子,安装Android TV系统
  11. 查看思科交换机出厂时间
  12. 输入密码三次,简单程序
  13. MikTex+texworks插入数学公式示例
  14. 项目开发遇到前端传递时间问题处理
  15. 复数乘法 哔哩哔哩2020校园招聘面试题详解
  16. Fragment与Activity之间的完美邂逅
  17. 送书 |《Python数据分析从小白到专家》
  18. AD7606的国产替代方案—ADCS8162
  19. Android Studio Button 美化
  20. 哪种变压器好-如何选择好的变压器-有哪几种型号和规格呢?

热门文章

  1. Basalt Paper Reading
  2. 基于Xilinx Virtex-6 XC6VLX240T 和TI DSP TMS320C6678的信号处理板
  3. Python爬虫实战 使用线程池批量爬取必应1080P高清壁纸
  4. MATLAB如何采用0~1的RGB值设置字体颜色?
  5. AntV L7地图可视化入坑笔记
  6. NLP之依存句法分析(小白专栏学习之路)
  7. 滤芯怎么换 石头机器人_石头扫地机滤网怎么洗_小米扫地机滤网更换步骤_小米扫地机滤网...
  8. 软件汉化:关于ZoomIt汉化的两个关键的问题
  9. 取整函数access_ACCESS基本函数大全.doc
  10. aptio设置全中文_aptio setup解决步骤