这不是一个实际的问题,这对我自己来说是一个粘滞便笺,可能对其他人有帮助。还有许多其他类似的问题:1,2,3,4,5,6,但它们似乎都没有提供这个解决方案。
我有以下实体:
class Order
{
// ...
/**
* @ManyToOne(targetEntity="Customer")
* @var Customer
*/
private $customer;
/**
* @Column(type="integer")
* @var int
*/
private $amount;
}
class Customer
{
// ...
}
Order
与Customer
具有单向,多对一的关系。我希望得到每个客户以及他的订单总量,因此我运行以下DQL查询:
SELECT c, SUM(o.amount)
FROM Model\Order o
JOIN o.customer c
GROUP BY c
但是我收到以下错误:
[学说\ ORM \查询\ QueryException]
[语义错误]第0行,第-1行附近'SELECT c,SUM(o.amount)':错误:如果不选择至少一个根实体别名,则无法通过标识变量选择实体。
我该如何解决?
答案 0 :(得分:7)
这是一个已知的学说限制。
解决方案是明确SELECT
您要检索的实体(Customer
)并使用Order
条件从那里手动加入另一个实体(WITH
) :
SELECT c, SUM(o.amount)
FROM Model\Customer c
JOIN Model\Order o WITH o.customer = c
GROUP BY c