0

我正在尝试在 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 个。

4

0 回答 0