[Yii2笔记]011 AR的生命周期(Active Record Life Cycles) [ 技术分享 ]
说明
学习Yii Framework 2(易2框架)的过程是漫长的,也是充满乐趣的,以下是我学习Yii2框架时对官网英文资料(请参见原文网址)的翻译和代码实现,提供了较完整的代码,供你参考。不妥之处,请多多指正!
原文网址:
http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#ar-life-cycles
7、Active Record Life Cycles(AR的生命周期)
本文主题:AR的生命周期(Active Record Life Cycles)
7、AR的生命周期(Active Record Life Cycles)
当Actie Record在不同场合应用时,理解它的生命周期将是非常重要的事情。在每个生命周期,方法将按照一个特定的顺序去执行,如果你需要自定义这个生命周期,可以重写这些方法。在生命周期中,特定Active Record事件被触发时你可以添加自定义代码。当你开发Active Record行为时,这些事件将非常有用,这样就可以实现Active Record生命周期的自定义了。
接下来,我们将汇总Active Record生命周期的各种情况,以及在生命周期中要执行的方法或事件。
//------------------- //创建对象生命周期(New Instance Life Cycle) 当使用new操作符创建一个新的Active Record实例时,将发生以下生命周期: 1)类构造器 2)init():触发EVENT_INIT事件
//------------------- //查询数据生命周期(Querying Data Life Cycle) 当使用查询方法查询数据时,每个向Active Record填充数据的过程都会经历以下生命周期: 1)类构造器 2)init():触发EVENT_INIT事件 3)afterFind():触发EVENT_AFTER_FIND事件
//------------------- //存储数据生命周期(Saving Data Life Cycle) 当调用save()插入或更新一个Active Record实例时,将发生以下生命周期: 1)EVENT_BEFORE_VALIDATE事件,如果此方法返回值为false或yii\base\ModelEvent::$isValid 为false,后续步骤将都不再执行。 2)执行数据验证,如果数据验证失败,第3步以后的步骤将被忽略。 3)EVENT_AFTER_VALIDATE事件。 4)EVENT_BEFORE_INSERT或VENT_BEFORE_UPDATE事件。如果此方法返回false或yii\base\ModelEvent::$isValid 是false,后续步骤将被忽略。 5)执行实际的数据插入或更新。 6)EVENT_AFTER_INSERT或EVENT_AFTER_UPDATE事件。
//------------------- //删除数据生命周期(Deleting Data Life Cycle) 当调用delete()删除一个Active Record实例时,将发生以下生命周期: 1)EVENT_BEFORE_DELETE事件,如果此方法返回false或yii\base\ModelEvent::$isValid 值为false,后续步骤将被忽略。 2)执行实际的数据删除操作。 3)EVENT_AFTER_DELETE事件
注意:调用以下方法时将不会执行任何生命周期,因为它们是直接对数据库进行操作且不是基于Active Record的: yii\db\ActiveRecord::updateAll() yii\db\ActiveRecord::deleteAll() yii\db\ActiveRecord::updateCounters() yii\db\ActiveRecord::updateAllCounters()
//------------------- //更新数据生命周期(Refreshing Data Life Cycle) 当调用refresh()刷新Active Record实例时,如果刷新成功并返回true时将触发EVENT_AFTER_REFRESH事件。
//AR相关的其他事件: afterFind(), beforeValidate(), afterValidate(), beforeSave(), afterSave(), beforeDelete(), afterDelete()
(全文完)
共 0 条回复
阿江
最后登录:2024-03-03
在线时长:186小时21分
- 粉丝94
- 金钱16816
- 威望160
- 积分20276