DQL中的json_build_object

时间:2016-12-27 13:55:34

标签: symfony postgis dql

有人知道如何在 Symfony / Doctrine 中写下面的查询吗?

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 运行查询时,查询效果非常好。

2 个答案:

答案 0 :(得分:1)

你绝对应该考虑使用这个bundle。我已经使用了很多它,它允许你用空间数据和Doctrine(它的文档很棒)做你想做的一切。

但是,json_build_object特定于PostGres,因此在Doctrine中不支持它(也不在我提到的包中)。对于这种特殊情况,您应该read this in SF doc通过自定义Doctrine Type创建自己的实现。 但是,如果您要做的只是在从数据库中检索对象后将对象序列化为JSON,则应该查看the serializer componentJMS Serializer

短版本将是“通过您的实体构建您的模型,通过ORM查询,并通过Serializer管理您的数据曝光”。

答案 1 :(得分:0)

我正在使用 https://github.com/jsor/doctrine-postgis 并且无法做到