From e37b4ee9b13ebefd1ae05172bd42c0eac180bbc7 Mon Sep 17 00:00:00 2001 From: Curzio Della Santa Date: Thu, 13 Jun 2019 09:29:53 +0200 Subject: [PATCH] Permit to use in operator with null as one of the items in array value --- .../ODM/Repository/BaseDocumentRepository.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Doctrine/ODM/Repository/BaseDocumentRepository.php b/src/Doctrine/ODM/Repository/BaseDocumentRepository.php index a5e5613..e02fd4b 100644 --- a/src/Doctrine/ODM/Repository/BaseDocumentRepository.php +++ b/src/Doctrine/ODM/Repository/BaseDocumentRepository.php @@ -185,7 +185,19 @@ protected function applyCriteriaToQueryBuilder(array $criteria, QueryBuilder $qu ); } - $queryBuilder->field($this->getField($field))->$operator($value); + $mappedField = $this->getField($field); + + // Permit to filter IN values when null is present + if ($operator === 'in' && in_array(null, $value, true)) { + $queryBuilder + ->field($mappedField) // Not necessary + ->addOr($queryBuilder->expr()->field($mappedField)->in($value)) // No need to filter out the null + ->addOr($queryBuilder->expr()->field($mappedField)->exists(false)); + + continue; + } + + $queryBuilder->field($mappedField)->$operator($value); } return $queryBuilder;