Laravel模型基础上增加before、after事件方法

作者: LeeHeng 分类: Laravel,后端 发布时间: 2017-04-01 15:31

Laravel框架本身没有自带beforeSave、afterSave的方法事件,但是可以自行加上这些,类似Yii框架,本身就自带这些方法,这类方法就像一个事件、触发器,可以在模型save之前,做一些属性值改变或者更多逻辑补充。

列举一下可以增加哪些before/after事件方法

  • before/afterCreate() 
  • before/afterSave()
  • before/afterUpdate()
  • before/afterDelete()
  • before/afterValidate()

如何给Model增加这些方法呢?

首先要给所有model定义一个基类,然后所有model都继承这个基类,

定义基类之后,我们来看看 \Illuminate\Database\Eloquent\Model,既然要添加对模型的操作,还是得深入了解一下。找到boot方法,上面有注释

那么可以从这里入手,在自己定义的基类上重写一下这个方法

接着就是其他所有的model层,举个栗子

只要调用create方法就会触发对应事件,例如

之前在公司项目中,大量使用mysql触发器,遇到过的应该懂的,反正就一句话,不好维护,出问题了,不好定位,之后只能改造一下,把触发器都抽离,能用before/after就用,不用可以用观察者,反正怎么灵活怎么来。

发表评论

电子邮件地址不会被公开。 必填项已用*标注