【发布时间】:2015-02-11 06:31:30
【问题描述】:
我一直在使用 symfony 框架,并想为我的实体添加一个“虚拟列”。我将尝试用纯 SQL 来说明我的要求:
SELECT l.id, l.latlng FROM locations AS l
生成具有 id、latlng 属性的位置数组。假设我想按距某个起点(latlng_start)的距离对结果进行排序,我会修改这个:
SELECT l.id,
l.latlng,
(calculation using **l.latlng** and given **[latlng_start]**) AS distance
FROM locations AS l
ORDER BY l.distance ASC
这将产生一个位置数组,其中最接近的位置优先。
在 symfony 框架内,为了教育起见,我将创建一个具有以下属性的位置实体:id、latlng 和 distance。其中 id 是自动的,latlng 一个字符串值和距离不持久。
我如何告诉我的实体在从数据库中抓取它时计算距离?
我的猜测是;使用实体构造函数使用 latlng 和给定参数设置距离。
在我当前的解决方案(这不满足我)中,我使用 createNativeQuery 和 rsm 来尝试添加此参数,但仍然得到实体(不是标量结果)。之后,我遍历实体并一一设置距离属性。
【问题讨论】:
标签: symfony doctrine-orm