主义/交响乐项目: 我尝试仅在设置参考的情况下获得结果。 因此该关系的列可以用参考ID填充,如果没有“设置”参考,则可以为null ... im无法排除具有空列的实际数据集
$qb = $this->em->createQueryBuilder();
$qb->select('am', 'lb')->from('MyBundle:Brand', 'am')
->leftJoin('MyBundle:XBuyer', 'lb')
->where('lb.id = am.buyer')
->andWhere('am.buyer IS NOT NULL');
我尝试过的另一种格式
$qb->select('am', 'lb')->from('MyBundle:Brand', 'am')
->leftJoin('MyBundle:XBuyer', 'lb')
->where('lb.id = am.buyer')
->andWhere('am.buyer != :buyer_id_val')
->setParameter('buyer_id_val', '');
也
$qb->select('am', 'lb')->from('MyBundle:Brand', 'am')
->leftJoin('MyBundle:XBuyer', 'lb')
->where('lb.id = am.buyer')
->andWhere($qb->expr()->isNotNull('am.buyer'));
am.buyer是对另一个表的引用-它在brands表中实际上是Buyer_id
之后
$data = $qb->getQuery()->execute(null, Query::HYDRATE_SCALAR);
不知道我在这里做什么错
答案 0 :(得分:2)
问题是我仍在数据库(其他项目)的上下文中思考,但是在使用学说的情况下,有必要在对象的上下文中思考-更具体地讲,实体之间是否存在关系
实际的IS NOT NULL表达式不是问题-问题是实体上的实际leftJoin而不是关系“名称”。
$qb->select('am', 'lb')->from('MyBundle:Brand', 'am')
->leftJoin('am.buyer', 'lb')
->where('am.buyer IS NOT NULL')
->andWhere('lb.id = am.buyer');
感谢大家在这段时间里的所有评论和支持
答案 1 :(得分:0)
就我而言
$qb = $this->em->createQueryBuilder();
生成的:
Too few arguments to function Doctrine\ORM\EntityRepository::createQueryBuilder()…
我终于写了:
$qb = $this->em->createQueryBuilder('am');
$qb->select('am')
->leftJoin('am.buyer', 'lb')
->where('lb.id = am.buyer')
->andWhere('am.buyer IS NOT NULL');
->orderBy('am.id', 'ASC')
->setMaxResults(30)
->getQuery()
->getResult()
;
效果很好!
注意:使用Symfony 4.2.3