$categories= array(3,20,24);
$qb = $this->em->createQueryBuilder();
$qb->select('p')
->from('\Entities\Productss', 'p')
->leftJoin('p.category', 'c')
->andWhere('p.id =?1')
->andWhere('p.id =?2')
->andWhere('p.id =?2')
->setParameter(1, $categories[0])
->setParameter(2, $categories[1])
->setParameter(3, $categories[2])
->getQuery();
这不允许多个......
$ categories是一个数组,由必须匹配的类别组成,以便选择正确的产品。如鞋(3),黑色(20),小(24)
可能?
答案 0 :(得分:0)
在Doctrine的文档中,我发现了这个:
// Example - $qb->expr()->in('u.id', array(1, 2, 3))
// Make sure that you do NOT use something similar to $qb->expr()->in('value', array('stringvalue')) as this will cause Doctrine to throw an Exception.
// Instead, use $qb->expr()->in('value', array('?1')) and bind your parameter to ?1 (see section above)
public function in($x, $y); // Returns Expr\Func instance
// Example - $qb->expr()->notIn('u.id', '2')
public function notIn($x, $y); // Returns Expr\Func instance
应该可以在此函数中放置子查询。我自己从未使用它,但试一试。
修改强>
我知道这是一种多对多的关系。在这种情况下,您应该使用MEMBER OF
选项。
所以喜欢:
$qb->...
->andWhere("p.category MEMBER OF ?1")
->andWhere("p.category MEMBER OF ?2")
->...