私はPropelORM 1.6プロジェクトにある種のGISサービスを使用して実装しています。データベース(MySQL)では、座標として、さまざまなアイテムの座標を格納するためにPOINTのフィールドタイプを使用しています。
schema.xmlテーブルモデルを構築するために、AFAIK空間データ型がまだサポートされていないため、この(POINT)フィールドをに設定しました。VARCHAR(255)
このフィールドの選択クエリの整理は、を使用してOKですCriteria::CUSTOMが、Propelでよく知られているものを使用してこのフィールドを更新したい場合、GeomFromText次のエラーが発生します。
警告:PDOStatement :: execute():SQLSTATE [22003]:数値が範囲外です:1416/var/www/.../propel/util/BasePeer.phpのGEOMETRYフィールドに送信したデータからジオメトリオブジェクトを取得できません425行目
を使用してフィールド値を設定しています
$object->setGeo("GeomFromText( 'POINT(48.211055 16.383728)' )");
この文字列はORMによって文字列値のように扱われ、本来GeomFromTextの関数としては扱われないと思います。
残念ながら、Criteria::CUSTOMフィールド値を設定することはできません。
PropelORMでそのようなフィールドを更新するにはどうすればよいですか?
更新:この種のタスクにZendFrameworkはZend_Db_Expr、PropelORMに似たようなものがあるのではないでしょうか?