我正在尝试在 Doctrine 中创建一个查询并且遇到了麻烦。我已经在 mysql 中找到了所需的查询,但似乎无法将其转换为 DQL。
这是我的 MySQL 查询:
SELECT *
FROM (
SELECT p.id, count(p.id) as count
FROM pear as p
JOIN vote as v ON v.pear_id = p.id
GROUP BY p.id
ORDER BY count DESC
) as t
GROUP BY t.icon_id;
如果我执行以下操作:
return $em->createQuery(
'SELECT * FROM (SELECT p.id, count(p.id) as count from pear as p JOIN vote as v ON v.pear_id = p.id GROUP BY p.id ORDER BY count DESC) as t GROUP BY t.icon_id'
);
我收到以下错误:
[Syntax Error] line 0, col 7: Error: Expected IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, got '*'
可能有更好的方法来实现这些结果。
我有四张桌子:
- 图标
- 梨
- 歌曲
- 投票
梨将图标与歌曲相匹配。投票是对一对的投票。
我正在尝试为每个图标找到顶级梨。我的逻辑是找到一个图标的所有梨,然后按票数对它们进行分组。然后我需要将此限制为仅返回每个图标的顶部梨。
我想要的最终结果是 Pear 对象列表,每个图标 1 个。