【发布时间】:2021-12-18 13:38:45
【问题描述】:
我对 QueryBuilder 有疑问。 我有两个实体:产品,属性,它们是多对多关系(每个产品可以有很多属性,每个属性可以有很多产品) 我创建产品存储库函数 findByAttributes()
public function findByAttributes($attributes)
{
$qb = $this->createQueryBuilder('p')
->join('p.attributes', 'a')
->where('a.slug = :slug1 OR a.slug = :slug2')
->setParameter('slug1', 'red')
->setParameter('slug2', 'blue')
;
return $qb->getQuery()->getResult();
}
当我使用 OR 时,它工作正常,但是当我切换到 AND 时,结果为空。 使用 AND 我只想选择同时具有这两种属性的产品。
我哪里错了?
Tnx
【问题讨论】:
-
a.slug不能同时等于两个不同的字符串,你确定这里没有问题吗? -
嗯...我只想选择具有这两种属性的产品
-
a.slug是什么?一个字符串?数组 ?你的 where 条件是:a.slug = 'red' 和 a.slug = 'blue',怎么可能同时出现? -
a.slug 是一个字符串。每个产品不能有很多属性。
-
那你没看到这里的问题吗?您希望能够检查 a.slug 是否同时等于两个不同的字符串。你说你想只选择具有这两种属性的产品,这怎么可能?是否有多个 slug 属性?
标签: php symfony doctrine query-builder