我的sql查询运行正常,
SELECT completed_by, count(*) AS Total
FROM tasks
WHERE completed_by is not null AND status = 1
GROUP BY completed_by
;
Em正在使用doctrine查询构建器,但无法返回错误。
$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();
并低于错误;
[语义错误]第0行,第21行附近'completedBy':错误:无效 PathExpression。必须是StateFieldPathExpression。
答案 0 :(得分:0)
这是错误的:COUNT(log) AS Total
。它应该是COUNT(log.log) AS Total
。
答案 1 :(得分:0)
我知道这个答案可能会迟到,但我遇到了同样的问题,并且没有在互联网上找到任何答案,我相信很多人都会在同样的问题上挣扎。
我假设你的“completedBy”是指另一个实体。
因此,在您的存储库中,您可以写:
$query = $this->createQueryBuilder("log")
->select("completer.id, count(completer)")
->join("log.completedBy", "completer")
->where('log.Status = :status')
->groupBy("completer")
->setParameters($parameters)
->getQuery();
这将编译为:
SELECT completer.id, count(completer) FROM "YOUR LOG CLASS" log INNER JOIN log.completedBy completer WHERE log.Status=:status GROUP BY completer
现在,您可以通过其ID执行另一个查询以获取这些“完成者”。