合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
| 事件 | 描述 | 事件方法名 | | --- | --- | --- | | 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 | ### create() 模型创建数据方法,会触发写入前、新增前、新增后、写入后。使用模型的save()和saveAll()来新增方法也会触发这几个事件。 ### insert() insert()是Db类的方法,不是模型方法,不会触发模型事件。 ### update() update()是Db类的方法,不是模型方法,不会触发模型事件。 ### save() 使用模型的save()方法来更新数据,会触发写入前、更新前、更新后、写入后事件。 ### delete() 如果是使用模型方法查询出来数据,然后再删除数据,则会触发删除前、删除后事件。如果是直接使用条件删除,则不会触发模型事件。因为直接使用条件删除,这时候的delete()方法不是模型方法。 ### find() 该查询方法会触发查询后事件 ### destroy() 该删除数据方法会触发查询后、删除前、删除后。所以,该方法是先查询出数据,然后再删除该数据。 ### restore() 该软删除恢复方法会触发恢复前、恢复后方法 模型代码 ~~~php <?php namespace app\model; use think\Model; class Users extends Model { 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('恢复后'); } } ~~~ 控制器代码 ~~~php $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(); ~~~