From 92fd4331cb9a2920afea660669a5789b62f4d717 Mon Sep 17 00:00:00 2001 From: Charly Date: Tue, 29 Jan 2019 15:31:58 +0100 Subject: [PATCH 1/2] https://github.com/stwe/DatatablesBundle/issues/848 --- Datatable/Filter/AbstractFilter.php | 10 +++++++++- Datatable/Options.php | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Datatable/Filter/AbstractFilter.php b/Datatable/Filter/AbstractFilter.php index 49cc2de6..487a7bca 100644 --- a/Datatable/Filter/AbstractFilter.php +++ b/Datatable/Filter/AbstractFilter.php @@ -130,7 +130,7 @@ public function configureOptions(OptionsResolver $resolver) $resolver->setAllowedTypes('placeholder', 'bool'); $resolver->setAllowedTypes('placeholder_text', array('null', 'string')); - $resolver->setAllowedValues('search_type', array('like', 'notLike', 'eq', 'neq', 'lt', 'lte', 'gt', 'gte', 'in', 'notIn', 'isNull', 'isNotNull')); + $resolver->setAllowedValues('search_type', array('like','%like','like%','notLike', 'eq', 'neq', 'lt', 'lte', 'gt', 'gte', 'in', 'notIn', 'isNull', 'isNotNull')); return $this; } @@ -400,6 +400,14 @@ protected function getExpression(Composite $expr, QueryBuilder $qb, $searchType, } switch ($searchType) { + case 'like%': + $expr->add($qb->expr()->like($searchField, '?'.$parameterCounter)); + $qb->setParameter($parameterCounter, $searchValue.'%'); + break; + case '%like': + $expr->add($qb->expr()->like($searchField, '?'.$parameterCounter)); + $qb->setParameter($parameterCounter, '%'.$searchValue); + break; case 'like': $expr->add($qb->expr()->like($searchField, '?'.$parameterCounter)); $qb->setParameter($parameterCounter, '%'.$searchValue.'%'); diff --git a/Datatable/Options.php b/Datatable/Options.php index 3c0c9162..b52cd34a 100644 --- a/Datatable/Options.php +++ b/Datatable/Options.php @@ -318,7 +318,7 @@ public function configureOptions(OptionsResolver $resolver) $resolver->setAllowedTypes('global_search_type', 'string'); $resolver->setAllowedValues('individual_filtering_position', array('head', 'foot', 'both')); - $resolver->setAllowedValues('global_search_type', array('like', 'notLike', 'eq', 'neq', 'lt', 'lte', 'gt', 'gte', 'in', 'notIn', 'isNull', 'isNotNull')); + $resolver->setAllowedValues('global_search_type', array('like','%like','like%','notLike', 'eq', 'neq', 'lt', 'lte', 'gt', 'gte', 'in', 'notIn', 'isNull', 'isNotNull')); return $this; } From bc1bbe7d35086e229669535f584f7158585147e9 Mon Sep 17 00:00:00 2001 From: Charly Date: Tue, 29 Jan 2019 15:55:36 +0100 Subject: [PATCH 2/2] Corrections adding like% and %like in filter --- Datatable/Filter/AbstractFilter.php | 10 +++++----- Datatable/Options.php | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Datatable/Filter/AbstractFilter.php b/Datatable/Filter/AbstractFilter.php index 487a7bca..1c886dfb 100644 --- a/Datatable/Filter/AbstractFilter.php +++ b/Datatable/Filter/AbstractFilter.php @@ -130,7 +130,7 @@ public function configureOptions(OptionsResolver $resolver) $resolver->setAllowedTypes('placeholder', 'bool'); $resolver->setAllowedTypes('placeholder_text', array('null', 'string')); - $resolver->setAllowedValues('search_type', array('like','%like','like%','notLike', 'eq', 'neq', 'lt', 'lte', 'gt', 'gte', 'in', 'notIn', 'isNull', 'isNotNull')); + $resolver->setAllowedValues('search_type', array('like', '%like', 'like%', 'notLike', 'eq', 'neq', 'lt', 'lte', 'gt', 'gte', 'in', 'notIn', 'isNull', 'isNotNull')); return $this; } @@ -400,17 +400,17 @@ protected function getExpression(Composite $expr, QueryBuilder $qb, $searchType, } switch ($searchType) { - case 'like%': + case 'like': $expr->add($qb->expr()->like($searchField, '?'.$parameterCounter)); - $qb->setParameter($parameterCounter, $searchValue.'%'); + $qb->setParameter($parameterCounter, '%'.$searchValue.'%'); break; case '%like': $expr->add($qb->expr()->like($searchField, '?'.$parameterCounter)); $qb->setParameter($parameterCounter, '%'.$searchValue); break; - case 'like': + case 'like%': $expr->add($qb->expr()->like($searchField, '?'.$parameterCounter)); - $qb->setParameter($parameterCounter, '%'.$searchValue.'%'); + $qb->setParameter($parameterCounter, $searchValue.'%'); break; case 'notLike': $expr->add($qb->expr()->notLike($searchField, '?'.$parameterCounter)); diff --git a/Datatable/Options.php b/Datatable/Options.php index b52cd34a..fa043ea1 100644 --- a/Datatable/Options.php +++ b/Datatable/Options.php @@ -318,7 +318,7 @@ public function configureOptions(OptionsResolver $resolver) $resolver->setAllowedTypes('global_search_type', 'string'); $resolver->setAllowedValues('individual_filtering_position', array('head', 'foot', 'both')); - $resolver->setAllowedValues('global_search_type', array('like','%like','like%','notLike', 'eq', 'neq', 'lt', 'lte', 'gt', 'gte', 'in', 'notIn', 'isNull', 'isNotNull')); + $resolver->setAllowedValues('global_search_type', array('like', '%like', 'like%', 'notLike', 'eq', 'neq', 'lt', 'lte', 'gt', 'gte', 'in', 'notIn', 'isNull', 'isNotNull')); return $this; }