我正在尝试从我的数据库中获取最新文档,我已创建此queryBuilder
以获取文档obeject
但是当我添加条款Having
时似乎无法正常工作。
这是我的疑问:
$qb = $this->createQueryBuilder('sm');
$qb
->andWhere('sm.supplier = :supplier')
->setParameter('supplier', $supplierId)
->andHaving('MAX(sm.createdAt)')
->groupBy('sm.id');
return $qb->getQuery()->getOneOrNullResult();
这是我得到的例外:
{“code”:500,“message”:“[语法错误]第0行,第1行:错误:预期 =,<,< =,<>,>,> =,!=,得到了字符串的结尾。“}
我的DQL
:
"SELECT sm FROM SupplierBundle\\Entity\\SupplierMedia sm WHERE sm.supplier = :supplier AND sm.type = :type GROUP BY sm.id HAVING MAX(sm.createdAt)"
答案 0 :(得分:1)
HAVING
表达式定义将在WHERE
和GROUP BY
之后应用于结果集的条件。
如果您只需要从表格应用限制和订单中获取最后一条记录。
答案 1 :(得分:1)
要获得每个供应商的最新对象,您可以使用自联接方法
SELECT a
FROM SupplierBundle\Entity\SupplierMedia a
LEFT JOIN SupplierBundle\Entity\SupplierMedia b
WITH a.supplier = b.supplier
AND a.createdAt < b.createdAt
WHERE b.createdAt IS NULL
AND a.supplier = :supplier
AND a.type = :type