我需要beforeFind(
在CActiveRecord
.
基本上,我需要在执行数据库中的实际搜索之前转换一些数据。
如何更改内部即将发生的即将发生的查找操作beforeFind()
?弄乱$this
属性没有用,因为它甚至没有填充,这有点令人惊讶。我已经看到文档提到了一个“隐藏的 CDbCriteria 参数”,但我无法猜测如何使用它...... 不幸的是,关于这个主题的文档很少。
我需要做的很简单:我有一个用于存储 IP 地址的表格列。从可伸缩性的角度来看,最有效的设计是对列使用 VARBINARY(16) 数据类型。例如,请参阅此SO 问题页面(和答案)。因此,最干净的解决方案是拥有并为用户透明地工作beforeFind()
。afterFind()
beforeSave()
inet_pton()
在代码堆栈中,IP 地址将是普通的点分四边形,而在 DB 级别中,在使用 PHP 的方法之后/之前的钩子方法之后进入该领域的任何内容。
它应该很酷。它很酷 - 使用afterFind()
and beforeSave()
,我有手头对象的 ip_address 属性,由我的超级操纵能力支配。
这是重点,也是需要:事情是,我不知道如何在beforeFind()
. 我不能盲目mergeWith()
,因为我需要检查 ip_address 属性是否是原始标准的一部分,并且我不知道该怎么做。
帮助!蒂亚:)