[英]Misunderstood of doctrine query builder
我误解了教义查询生成器获得了意想不到的结果。
拳头时间,我用它来获得ID的:
从班纳横幅资源库中:
$this->createQueryBuilder('e')->select('b.id as bid')->from('AppBundle\Entity\Banner', 'b')->getQuery()->execute();
我得到了16条重复的记录,而在数据库中只有4条。 好的,我添加了->select('distinct(b.id) as bid')
,这解决了问题。
但是第二次我用where子句按布尔值过滤记录。
$shownLast = $this->createQueryBuilder('e')->from('AppBundle\Entity\Banner', 'b')
->where('b.shownLast = 1')->getQuery()->getResult();
并获取所有记录,无论它接受与否。
请帮助,也许我在教义用法上有问题。
在BannerRepository中,您不必使用from函数,因为它已经是Banner实体的存储库。 createQueryBuilder函数的第一个参数是横幅的别名。 使用这样的东西:
$shownLast = $this->createQueryBuilder('b')
->select('b')->where('b.shownLast = 1')
->getQuery()->getResult();
下面是一个DQL查询示例,其中包含选择,条件和排序依据:
$variable=$request->get('variable');
$query = $em->createQuery(
'SELECT b.id FROM App\Entity\Banner b
WHERE b.showLast = TRUE
AND
b.someField = :dinamicVariable
ORDER BY u.name ASC'
)->setParameters([
'dinamicVariable' => '%' . $variable. '%',
]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.