Symfony 将两个doctrine2查询合并为一个查询

Symfony 将两个doctrine2查询合并为一个查询,symfony,orm,doctrine-orm,doctrine,Symfony,Orm,Doctrine Orm,Doctrine,我有以下疑问: $query = $qb->select('DISTINCT s') ->from("MainBundle:Shop", 's') ->andWhere('SOUNDEX(s.fullname) = SOUNDEX(:shopName)'); $parameter["shopName"] = $searchquery; $query->setParameters($parameter);

我有以下疑问:

  $query = $qb->select('DISTINCT s')
              ->from("MainBundle:Shop", 's')
              ->andWhere('SOUNDEX(s.fullname) = SOUNDEX(:shopName)');
  $parameter["shopName"] = $searchquery;
  $query->setParameters($parameter);

  $query = $qb->select('DISTINCT s')
              ->from("MainBundle:Shop", 's')
              ->andWhere($qb->expr()->like('s.fullname', $qb->expr()->literal('%' . $searchquery . '%')));

是否可以将这两个查询合并为一个?

如果第二个查询有效,则应该可以:

$em = $this->getEntityManager();

$qb = $em->createQuery('
    SELECT DISTINCT s
    FROM MainBundle:Shop p
    WHERE Soundex(s.fullname) = :soundex(shopname) OR
        ($qb->expr()->like('s.fullname', $qb->expr()->literal('%' . $searchquery . '%')))
');
$parameter["shopName"] = $searchquery;
$query->setParameters($parameter);

你可以写或不写一个查询吗?我没有检查,但我想是的。您可以使用运算符“AND”和“OR”来连接属性,所以我想是的。