Muh*_*aqi 6 php postgresql doctrine symfony doctrine-orm
我有下面的 sql 查询运行良好,
SELECT completed_by, count(*) AS Total
FROM tasks
WHERE completed_by is not null AND status = 1
GROUP BY completed_by
;
Run Code Online (Sandbox Code Playgroud)
他们正在使用学说查询构建器来执行此操作,但无法返回错误。
$parameters = array(
'status' => 1,
);
$qb = $repository->createQueryBuilder('log');
$query = $qb
->select(' log.completedBy, COUNT(log) AS Total')
->where('log.Status = :status')
->groupBy('log.completedBy')
->setParameters($parameters)
->getQuery();
Run Code Online (Sandbox Code Playgroud)
并低于错误;
[语义错误] 第 0 行,第 21 列“completedBy”附近:错误:无效的 PathExpression。必须是 StateFieldPathExpression。
小智 6
我知道这个答案可能会迟到,但我遇到了完全相同的问题,并且在互联网上没有找到任何答案,我相信很多人都会在同样的问题上遇到困难。
我假设您的“completedBy”指的是另一个实体。
因此,在您的存储库中,您可以编写:
$query = $this->createQueryBuilder("log")
->select("completer.id, count(completer)")
->join("log.completedBy", "completer")
->where('log.Status = :status')
->groupBy("completer")
->setParameters($parameters)
->getQuery();
Run Code Online (Sandbox Code Playgroud)
这将编译为如下内容:
SELECT completer.id, count(completer) FROM "YOUR LOG CLASS" log INNER JOIN log.completedBy completer WHERE log.Status=:status GROUP BY completer
Run Code Online (Sandbox Code Playgroud)
现在,您可以执行另一个查询,通过 ID 获取这些“完成者”。
| 归档时间: |
|
| 查看次数: |
26904 次 |
| 最近记录: |