我误解了教义查询生成器获得了意想不到的结果。
第一时间我用它来获取ID:
来自BannerRepository类:
$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();
获取所有记录,无论记录是否接受。
请帮助,也许我在教义用法上错了。
答案 0 :(得分:0)
在BannerRepository中,您不必使用from函数,因为它已经是Banner实体的存储库。 createQueryBuilder函数的第一个参数是横幅的别名。使用类似这样的内容:
Optional<Application> application = this.applicationDao.findById(id);
application.map(app -> Pair.of(app, Optional.ofNullable(app.getQuotes())))
.filter(quote -> quote.getValue().isPresent())
.map(quote -> quote.getValue().get().stream().map(q -> Pair.of(quote.getKey(), q)));
答案 1 :(得分:0)
有一个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. '%',
]);