ThinkPHP6取消了模型的自动完成功能,由模型事件代替,而模型事件非常抽象,没使用过的话,没有概念,现在用一个小的实例代码帮助理解模型事件的应用。
一、在模型中定义以下模型事件。该模型事件的意思是:在User模型执行插入动作之前,传入一个由控制器生成的$user实例,并将该实例的ip属性设置为request()->ip();,即请求发出方的IP地址。 namespace app\model;use think\Model; class User extends Model { protected static function onBeforeInsert($user) { $user->ip=request()->ip(); } }
二、控制器中的操作,控制器生成一个user实例,并将其id属性设置为1,然后插入数据。这样最终的效果是将id设为1,将ip设为request()->ip(),然后执行插入。模型事件onBeforeInsert完成ip属性的设置,id属性由控制器设置。 $user= new User; $user->id = 1 $user->save();
以上就是ThinkPHP6模型事件的作用,全局事件也基本是这个概念,希望大家理解。 |