php - pass array of conditions to doctrine expr()->orx() method

ID : 131342

viewed : 2

Tags : phpoopdoctrine-ormdqlphp

Top 5 Answer for php - pass array of conditions to doctrine expr()->orx() method

vote vote

99

I hope so, then I found this :

$conditions = array('e.type = x', 'e.type = Y', 'e.type = N'); $orX = $qb->expr()->orX();  foreach ($conditions as $condition) {     $orX->add($condition); }  $qb->add('where', $orX); 

Using @meze suggestion, you can simplify the code and replace the foreach statement with:

$orX->addMultiple($conditions); 
vote vote

86

@DEY his answer can be simplified. No need for the foreach, this also works:

$conditions = array('e.type = x', 'e.type = Y', 'e.type = N');  $orX = $qb->expr()->orX(); $orX->addMultiple($conditions);  $qb->where($orX); 
vote vote

77

I knew that tommarow gonna be a better day. The solution is simple. Your can make array of OR expressions like so

$ors[] = $qb->expr()->orx('e.type = '.$qb->expr()->literal($value)); 

And then just add it to andWhere()/Where() method of the query builder via join method like so:

$qb->andWhere(join(' OR ', $ors)); 
vote vote

60

You can also use ... in php like:

$conditions = array('e.type = x', 'e.type = Y', 'e.type = N'); $criteria = Criteria::create(); $criteria->andWhere(Criteria::expr()->orX(...$conditions)); 
vote vote

54

You can also use the call_user_func_array function like this.

It lets you call a method passing an array's items as parameters.

For example:

$conditions = array('e.type = x', 'e.type = Y', 'e.type = N'); $expr = $qb->expr(); call_user_func_array(array($expr, 'orX'), $conditions); 

Top 3 video Explaining php - pass array of conditions to doctrine expr()->orx() method

Related QUESTION?