2011-04-27 82 views
2

這是(下面的代碼不工作)情況:學說自定義查詢生成器過濾器

if(is_array($filters)) 
    { 
     $f = array(); 

     foreach($filters as $filter) 
     { 
      $f[] = $qb->expr()->like("p.tags","'%" . $filter . "%'"); 
     } 

     $qb->andWhere($qb->expr()->orx($f)); 
    } 

我需要自定義的通過/多個表達式ORX功能,但我不知道怎麼樣!

的ORX功能sistaxe是:

$ QB-> EXPR() - >和X($ COND1 [,$ condN])

固定例子(從教義的文檔的提取):

$qb->add('select', $qb->expr()->select('u')) 
->add('from', $qb->expr()->from('User', 'u')) 
->add('where', $qb->expr()->orx(
    $qb->expr()->eq('u.id', '?1'), 
    $qb->expr()->like('u.nickname', '?2') 
)) 

請幫助!

回答

0

Neater解決方案:)

if(is_array($filters)) 
{ 
    $f = array(); 

    $orCondition = $qb->expr()->orX(); 
    foreach($filters as $filter) 
    { 
     $orCondition->add($qb->expr()->like("p.tags", "'%" . $filter . "%'")); 
    } 

    $qb->andWhere($orCondition); 
} 

或者,你可以這樣做:

$orCondition->addMultiple(<conditions_array>);