在 SF2 queryBuilder 的 AND 子句中添加 OR 子句
Add OR clause in AND clause in SF2 queryBuilder
我想在 SF2 查询生成器中执行这样的请求:
SELECT *
FROM `annonce` a
LEFT JOIN `ville` v ON a.ville_id=v.id
WHERE a.titre LIKE '%s%' AND (v.cp LIKE '94%' OR v.nomComplet='alf%')
但我不知道如何在 AND 子句中包含 OR 子句。目前我有:
$qb = $this->createQueryBuilder('a')
->select('a')
->leftJoin('a.ville', 'v');
$qb->where($qb->expr()->like('a.titre', ':titre'))
->andWhere($qb->expr()->like('v.cp', ':lieu'))
->OrWhere($qb->expr()->like('v.nomComplet', ':lieu'))
->setParameter('titre', '%' . $item . '%')
->setParameter('lieu', $lieu . '%')
->getQuery()
->getResult();
但这不是正确的实现。我需要在 AndWhere
中使用 OrWhere
感谢帮助
您要找的是orX condition
$qb->expr()->andWhere(
$qb->expr()->orX(
$qb->expr()->like('v.cp', ':lieu'),
$qb->expr()->like('v.nomComplet', ':lieu')
)
)
我想在 SF2 查询生成器中执行这样的请求:
SELECT *
FROM `annonce` a
LEFT JOIN `ville` v ON a.ville_id=v.id
WHERE a.titre LIKE '%s%' AND (v.cp LIKE '94%' OR v.nomComplet='alf%')
但我不知道如何在 AND 子句中包含 OR 子句。目前我有:
$qb = $this->createQueryBuilder('a')
->select('a')
->leftJoin('a.ville', 'v');
$qb->where($qb->expr()->like('a.titre', ':titre'))
->andWhere($qb->expr()->like('v.cp', ':lieu'))
->OrWhere($qb->expr()->like('v.nomComplet', ':lieu'))
->setParameter('titre', '%' . $item . '%')
->setParameter('lieu', $lieu . '%')
->getQuery()
->getResult();
但这不是正确的实现。我需要在 AndWhere
中使用 OrWhere感谢帮助
您要找的是orX condition
$qb->expr()->andWhere(
$qb->expr()->orX(
$qb->expr()->like('v.cp', ':lieu'),
$qb->expr()->like('v.nomComplet', ':lieu')
)
)