for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Doctrine\ODM\MongoDB\Query;
/**
* Utility class for merging query criteria.
*
* This is mainly used to incorporate filter and ReferenceMany mapping criteria
* into a query. Each criteria array will be joined with "$and" to avoid cases
* where criteria might be inadvertently overridden with array_merge().
*/
class CriteriaMerger
{
* Combines any number of criteria arrays as clauses of an "$and" query.
* @param array ...$criterias Any number of query criteria arrays
* @return array
public function merge(...$criterias)
$nonEmptyCriterias = array_values(array_filter($criterias, function (array $criteria) {
return !empty($criteria);
}));
switch (count($nonEmptyCriterias)) {
case 0:
return [];
case 1:
return $nonEmptyCriterias[0];
default:
return ['$and' => $nonEmptyCriterias];
}