@@ -29,6 +29,10 @@ final class PartialSearchFilter implements FilterInterface, OpenApiParameterFilt
2929 use BackwardCompatibleFilterDescriptionTrait;
3030 use OpenApiFilterTrait;
3131
32+ public function __construct (private readonly bool $ caseSensitive = false )
33+ {
34+ }
35+
3236 public function apply (QueryBuilder $ queryBuilder , QueryNameGeneratorInterface $ queryNameGenerator , string $ resourceClass , ?Operation $ operation = null , array $ context = []): void
3337 {
3438 $ parameter = $ context ['parameter ' ];
@@ -46,7 +50,9 @@ public function apply(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $q
4650 $ parameterName = $ queryNameGenerator ->generateParameterName ($ property );
4751 $ queryBuilder ->setParameter ($ parameterName , $ this ->formatLikeValue ($ values ));
4852
49- $ likeExpression = 'LOWER( ' .$ field .') LIKE LOWER(: ' .$ parameterName .') ESCAPE \'\\\'' ;
53+ $ likeExpression = $ this ->caseSensitive
54+ ? $ field .' LIKE : ' .$ parameterName .' ESCAPE \'\\\''
55+ : 'LOWER( ' .$ field .') LIKE LOWER(: ' .$ parameterName .') ESCAPE \'\\\'' ;
5056 $ queryBuilder ->{$ context ['whereClause ' ] ?? 'andWhere ' }($ likeExpression );
5157
5258 return ;
@@ -55,7 +61,10 @@ public function apply(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $q
5561 $ likeExpressions = [];
5662 foreach ($ values as $ val ) {
5763 $ parameterName = $ queryNameGenerator ->generateParameterName ($ property );
58- $ likeExpressions [] = 'LOWER( ' .$ field .') LIKE LOWER(: ' .$ parameterName .') ESCAPE \'\\\'' ;
64+ $ likeExpressions [] = $ this ->caseSensitive
65+ ? $ field .' LIKE : ' .$ parameterName .' ESCAPE \'\\\''
66+ : 'LOWER( ' .$ field .') LIKE LOWER(: ' .$ parameterName .') ESCAPE \'\\\'' ;
67+
5968 $ queryBuilder ->setParameter ($ parameterName , $ this ->formatLikeValue ($ val ));
6069 }
6170
0 commit comments