モデルに属性があり、データベース内にバイナリ形式で保存されています。アトリビュートがジオメトリック(ポリゴン)オブジェクトの場合。
このオブジェクトは、複数の文字列表現にキャストできます。では、検索の実行後に、返されたセットのみの属性を変更できるようにするイベントをどのようにアタッチできますか?
私の最初の推測は 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
}