admin 发表于 2020-11-22 15:23:08

ThinkPHP 6 模型事件的实例代码教程


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