0

我需要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 属性是否是原始标准的一部分,并且我不知道该怎么做。

帮助!蒂亚:)

4

1 回答 1

1

我在 yii 论坛上有一个很好的建议。基本上,我只需要在子类中覆盖 findByAttributes() 即可:)

于 2012-07-05T19:45:56.167 回答