2016-12-27 6 views
1

誰でも下のクエリを書く方法を知っていますSymfony/DoctrineDQLのjson_build_object

SELECT json_build_object(
    'type',  'Feature', 
    'id',   id, 
    'geometry', ST_AsGeoJSON(geom)::json, 
    'properties', json_build_object(
     'name', building_name, 
     'type', building_type, 
     'area', ST_Area(geom)::numeric(10,2) 
     ) 
    ) 
FROM geoepom.buildings WHERE id=1; 

私はpsqlのまたはphppgadminでそれを実行すると、クエリは完璧に動作します。

答えて

1

あなたは間違いなくこのbundleの使用を検討する必要があります。私はそれをたくさん使っており、空間データとDoctrine(そしてそのドキュメントは素晴らしいです)で必要なものをすべて実行することができます。

しかし、json_build_objectはPostGresに固有のものなので、Doctrine(これは私が言及したバンドル)ではサポートされていません。この特定のケースでは、カスタムDoctrine型を使用して独自の実装を作成するには、read this in SF docを使用する必要があります。 しかし、データベースから取得した後にオブジェクトをJSONにシリアル化するだけの場合は、the serializer componentまたはJMS Serializerを参照する必要があります。

ショートバージョンは ""となります。エンティティをモデル化し、ORMを介してクエリを作成し、シリアライザでデータ公開を管理します。

0

私は https://github.com/jsor/doctrine-postgis を使用していて、それを行うことができなかったのどちらか

+0

だからあなたは間違いなくシリアライザを使用して独自のロジックを使用して、水和オブジェクトをシリアル独自の教義を入力または(より良いオプションの私見)を作成することを検討すべきです。 –

+0

この段階では、私はそれを行う方法がわからないにもかかわらず、あまりにもうんざりです。 今、GeoJson FeatureCollectionを準備するためにクエリを使用しています。 将来的には... – mysiar