Yii框架:如何使用CActiveRecord.beforeFind()?

Yii框架:如何使用CActiveRecord.beforeFind()?,activerecord,yii,yii-events,Activerecord,Yii,Yii Events,我需要在CActiveRecord的子类中使用beforeFind() 基本上,在数据库中执行实际搜索之前,我需要转换数据库中的一些数据 如何在beforeFind()中更改即将发生的查找操作?混用$this属性是没有用的,因为它甚至没有填充,这有点令人惊讶。 我看到文档中提到了一个“隐藏的CDbCriteria参数”,但我猜不出该如何使用它。不幸的是,关于这个主题的文档很少 我需要做的很简单:我有一个用于存储IP地址的表列。从可伸缩性的角度来看,最有效的设计是为列使用VARBINARY(16)

我需要在
CActiveRecord
的子类中使用
beforeFind(

基本上,在数据库中执行实际搜索之前,我需要转换数据库中的一些数据

如何在beforeFind()中更改即将发生的查找操作?混用
$this
属性是没有用的,因为它甚至没有填充,这有点令人惊讶。 我看到文档中提到了一个“隐藏的CDbCriteria参数”,但我猜不出该如何使用它。不幸的是,关于这个主题的文档很少

我需要做的很简单:我有一个用于存储IP地址的表列。从可伸缩性的角度来看,最有效的设计是为列使用VARBINARY(16)数据类型。例如,请参见本页的问题页(和答案)。 因此,最干净的解决方案是让
beforeFind()
afterFind()
beforeSave()
对用户透明地工作

在代码堆栈中,IP地址将是普通的虚线四元组,在DB级别,它是在那些after/before hook方法中使用PHP的
inet\u pton()
方法后进入字段的内容

本来应该很酷的。这很酷,有了
afterFind()
beforeSave()
,我就拥有了手头对象的ip_地址属性,这完全取决于我的uber操作能力

重点和需要是:我不知道如何在
beforeFind()
上实现这一点。我无法执行盲
mergeWith()
,因为我需要检查ip_地址属性是否是原始条件的一部分,并且我不知道如何执行

救命啊! TIA:)

我在yii论坛上找到了。 基本上,我只需要在子类中重写FindByatAttributes(),就完成了:)