我正在使用Symfony 3.4我遇到了查询问题:
$qb = $this->createQueryBuilder('o')
->leftJoin('o.prices', 'p', 'WITH', 'p.dateEnd >= :now OR p.dateEnd IS NULL')
->setParameter('now', $nowDate);
return $qb->getQuery()->getResult();
所以,我有一个实体Offer o
OneToMany Price p
。
我需要使用此查询仅在条件有效时获取优惠和价格:p.dateEnd >= :now OR p.dateEnd IS NULL
我在我的数据库中有2个价格,其中dateEnd = null,dateEnd = 2018-01-01 00:00:00,所以我预计只检索dateEnd = null的价格,但我的getResult()中有所有价格...
为什么?
我如何才能获得每个优惠的特定价格而不是所有价格?
谢谢!
编辑:这是我的sql:
SELECT o0_.id AS id_0
FROM offer o0_
LEFT JOIN price p1_
ON o0_.id = p1_.offerId
AND (p1_.date_end >= ? OR p1_.date_end IS NULL)
答案 0 :(得分:1)
答案是将$qb = $this->createQueryBuilder('o')
->leftJoin('o.prices', 'p')
->where('p.dateEnd >= :now OR p.dateEnd IS NULL')
->setParameter('now', $nowDate);
return $qb->getQuery()->getResult();
添加到查询中..不知道为什么!
答案 1 :(得分:0)
因为它是左连接,我认为你可以这样编写你的查询:
$string = "This is a test";
While(true) {
substr($string,0,-1);
if ($string = "") {
$string = "This is a test";
sleep(1);
}
}