给出以下DQL查询:
SELECT
p,
(p.views * 0.1) + (p.likes * 0.9) as ratingPhoto
FROM
AppBundle:Photo p
ORDER BY
ratingPhoto DESC
Run Code Online (Sandbox Code Playgroud)
我的结果集如下所示:
array (size=14)
0 =>
array (size=2)
0 => object(Photo)
'ratingPhoto' => string '1.42' (length=4)
1 =>
array (size=2)
0 => object(Photo)
'ratingPhoto' => string '1.31' (length=4)
...
Run Code Online (Sandbox Code Playgroud)
是否有任何DQL功能,以便我只检索Photo对象并从结果集中排除其他选定的字段?这是我期望的结果:
array (size=14)
0 => object(Photo)
1 => object(Photo)
...
Run Code Online (Sandbox Code Playgroud)
您要查找的是ORDER子句和HIDDEN关键字中的计算值.
通常,您必须执行以下操作:
SELECT
a,
b,
(SOME_COMPUTATION()) AS computed
FROM
...
ORDER BY
computed ASC
Run Code Online (Sandbox Code Playgroud)
要从computed结果集"隐藏" 值,自Doctrine ORM 2.3起,您可以使用以下HIDDEN子句:
SELECT
a,
b,
(SOME_COMPUTATION()) AS HIDDEN computed
FROM
...
ORDER BY
computed ASC
Run Code Online (Sandbox Code Playgroud)
这就是你的DQL的样子:
SELECT
p,
(p.views * 0.1) + (p.likes * 0.9) AS HIDDEN ratingPhoto
FROM
AppBundle:Photo p
ORDER BY
ratingPhoto DESC
Run Code Online (Sandbox Code Playgroud)