而不是一个实际的问题,这对我自己来说是一个粘滞便笺,可能对其他人有帮助.还有许多其他类似的问题:1,2,3,4,5,6,但他们都不似乎提供了这种解决方案.
我有以下实体:
class Order
{
// ...
/**
* @ManyToOne(targetEntity="Customer")
* @var Customer
*/
private $customer;
/**
* @Column(type="integer")
* @var int
*/
private $amount;
}
class Customer
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
Order与...具有单向,多对一的关系Customer.我想让每个客户以及他的订单总量,所以我运行以下DQL查询:
SELECT c, SUM(o.amount)
FROM Model\Order o
JOIN o.customer c
GROUP BY c
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
[Doctrine\ORM\Query\QueryException]
[语义错误]第0行,col-1靠近'SELECT c,SUM(o.amount)':错误:如果不选择至少一个根实体别名,则无法通过标识变量选择实体.
我该如何解决?
Ben*_*min 10
这是一个已知的学说限制.
解决方案是明确SELECT要检索Customer的实体(Order)并使用WITH条件从那里手动加入另一个实体():
SELECT c, SUM(o.amount)
FROM Model\Customer c
JOIN Model\Order o WITH o.customer = c
GROUP BY c
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4956 次 |
| 最近记录: |