2013-01-16 28 views
-1

我需要爲我的交友網站構建一個SQL/DQL查詢,它可以檢索具有諸如性別,年齡,位置和3個興趣等匹配字段的所有用戶。我不知道如何在我的DQL查詢中創建多個條件。我已經開始用類似的東西:DQL查詢中的多重條件

SELECT u FROM MyUserBundle:User u WHERE u.sex LIKE :preference"); $query->setParameters(array('preference' => '%' . $preference . '%' 'age' => '%' . $age . '%' 'location' => '%' . $location . '%' 'interest' => '%' . $interests . '%')); $users = $query->getResult();

我使用的Symfony2和Doctrine2,並沒有爲我工作。有人可以告訴我如何管理我的查詢內多個條件?謝謝你的幫助!

回答

3

在更復雜的查詢的情況下,最好使用Doctrine2 Query Builder

$qb = $this->getDoctrine()->getEntityManager()->createQueryBuilder(); 

$qb 
    ->select('u') 
    ->from('MyUserBundle:User', 'u') 
    ->where($qb->expr()->like('u.sex', ':preferense')) 
    ->andWhere($qb->expr()->like('u.age', ':age')) 
    ->andWhere($qb->expr()->like('u.location', ':location')) 
    ->andWhere($qb->expr()->like('u.interest', ':interest')) 
    ->setParameters(array(
     'preferense' => '%'.$preference.'%', 
     'age' => '%'.$location.'%', 
     'location' => '%'.$location.'%', 
     'interest' => '%'.$interests.'%', 
    )); 

$users = $qb->getQuery()->getResult(); 

提示:如果$利益是陣列中使用的foreach。