Skip to content

Commit 4cf2e8d

Browse files
This pull request fixes per-column searches. (#120)
* This rest of the logic shall be in search criteria. * Use filter only if is set. Operator from column definition. * Fix filter type inconsistency.
1 parent f3a35b3 commit 4cf2e8d

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

src/Adapter/Doctrine/ORM/SearchCriteriaProvider.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,14 @@ private function processSearchColumns(QueryBuilder $queryBuilder, DataTableState
4040
$column = $searchInfo['column'];
4141
$search = $searchInfo['search'];
4242

43-
if ('' !== trim($search) && null !== ($filter = $column->getFilter())) {
43+
if ('' !== trim($search)) {
44+
if (null !== ($filter = $column->getFilter())) {
45+
if (!$filter->isValidValue($search)) {
46+
continue;
47+
}
48+
}
4449
$search = $queryBuilder->expr()->literal($search);
45-
$queryBuilder->andWhere(new Comparison($column->getField(), $filter->getOperator(), $search));
50+
$queryBuilder->andWhere(new Comparison($column->getField(), $column->getOperator(), $search));
4651
}
4752
}
4853
}

src/Column/AbstractColumn.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ protected function configureOptions(OptionsResolver $resolver)
129129
->setAllowedTypes('orderField', ['null', 'string'])
130130
->setAllowedTypes('searchable', ['null', 'boolean'])
131131
->setAllowedTypes('globalSearchable', ['null', 'boolean'])
132-
->setAllowedTypes('filter', ['null', 'array'])
132+
->setAllowedTypes('filter', ['null', AbstractFilter::class])
133133
->setAllowedTypes('className', ['null', 'string'])
134134
->setAllowedTypes('render', ['null', 'string', 'callable'])
135135
->setAllowedTypes('operator', ['string'])

src/DataTableState.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ private function handleSearch(ParameterBag $parameters)
115115
$column = $this->dataTable->getColumn((int) $key);
116116
$value = $this->isInitial ? $search : $search['search']['value'];
117117

118-
if ($column->isSearchable() && '' !== trim($value) && null !== $column->getFilter() && $column->getFilter()->isValidValue($value)) {
118+
if ($column->isSearchable() && ('' !== trim($value))) {
119119
$this->setColumnSearch($column, $value);
120120
}
121121
}

0 commit comments

Comments
 (0)