我的repostory类中有以下dql:
public function find2($id)
{
return $this->createQueryBuilder('b')
->select('b', 'branch', 'pai', 'dri', 'COUNT(dri) AS ct')
->leftJoin('b.branches', 'branch')
->leftJoin('branch.productAllocationItems','pai')
->leftJoin('pai.DRItems', 'dri')
->where('b.id = :id')
->setParameter('id', $id)
->andWhere('ct > 1')
->getQuery()
->getResult();
}
我的问题是COUNT似乎没有用,我的查询有什么问题吗? 我只想根据条件返回其DRItems的实体。感谢。
我收到以下错误:
未找到列:1054'where子句'中的未知列'sclr0'
答案 0 :(得分:1)
使用
- >有('ct> 1')
而不是
- > andWhere('ct> 1')
public function find2($id)
{
return $this->createQueryBuilder('b')
->select('b', 'branch', 'pai', 'dri', 'COUNT(dri) AS ct')
->leftJoin('b.branches', 'branch')
->leftJoin('branch.productAllocationItems','pai')
->leftJoin('pai.DRItems', 'dri')
->where('b.id = :id')
->setParameter('id', $id)
->having('ct > 1')
->getQuery()
->getResult();
}
答案 1 :(得分:0)
您可以通过更改select
声明来计算。
根据documentation,可以使用格式
但是对于count,你可以用逗号分隔的字段来实现count,就像我们在 SQL 中那样。
// Example - $qb->select('u')
// Example - $qb->select(array('u', 'p'))
// Example - $qb->select($qb->expr()->select('u', 'p'))
public function select($select = null);
更改
->select('b', 'branch', 'pai', 'dri', 'COUNT(dri) AS ct')
致
->select( 'b,branch, pai, dri ,COUNT(dri) AS ct')