繁体   English   中英

误解学问查询生成器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM