2013-10-11 48 views
0

我有以下查詢:將兩個doctrine2查詢到一個

$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 . '%'))); 

是否有可能兩者結合這兩個查詢到嗎?

回答

1

如果你的第二個查詢的工作,這應該工作:

$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); 
+0

你可以做或不寫查詢? – adit

+0

我沒有檢查,但我想是這樣。你可以使用運算符「AND」和「OR」連接屬性,所以我猜是的。 – 2013-10-11 09:31:09