我的模型中有一个属性,它以二进制格式存储在数据库中。如果属性是几何(多边形)对象。
该对象可以转换为多个字符串表示形式。那么如何在 find 执行后附加一个事件,只允许我更改返回集的属性?
我的第一个猜测是使用 onAfterFind 事件,但它没有像文档建议的那样使用创建的元素调用处理程序。我的第一次尝试是在控制器中进行以下操作。
// an activeRecord class
GeoTableBinaryData extends CActiveRecord {
... // normal active record with a table which has a binary attribute called geom
}
$model = GeoTableBinaryData::model();
$model->onAfterFind->add(
function( CEvent $evt ){
// get the finded object to update the geom attribute on the fly here want
// a text representation in other case would transform it to XML or JSON
}
);
foreach ( $model->findAll() as $geoInfo )
{
... // output serialized geometry
}