diff options
| author | Greg Roach <fisharebest@webtrees.net> | 2019-01-06 19:23:00 +0000 |
|---|---|---|
| committer | Greg Roach <fisharebest@webtrees.net> | 2019-01-06 19:23:00 +0000 |
| commit | fbbe964bc80e7afdf862fef357b9aa52ded269cb (patch) | |
| tree | 30eac5089d9fc97e5430b9a3307877634d741387 /app/Services/DatatablesService.php | |
| parent | af2825862addd398202103e808cfcad2c46ea40d (diff) | |
| download | webtrees-fbbe964bc80e7afdf862fef357b9aa52ded269cb.tar.gz webtrees-fbbe964bc80e7afdf862fef357b9aa52ded269cb.tar.bz2 webtrees-fbbe964bc80e7afdf862fef357b9aa52ded269cb.zip | |
Add query-builder macro for substring-search
Diffstat (limited to 'app/Services/DatatablesService.php')
| -rw-r--r-- | app/Services/DatatablesService.php | 24 |
1 files changed, 1 insertions, 23 deletions
diff --git a/app/Services/DatatablesService.php b/app/Services/DatatablesService.php index 2a73274318..ed137d9924 100644 --- a/app/Services/DatatablesService.php +++ b/app/Services/DatatablesService.php @@ -29,13 +29,6 @@ use function strtr; */ class DatatablesService { - // We need to escape special characters in a LIKE clause, so we can search for them. - private const ESCAPE_LIKE = [ - '%' => '\\%', - '_' => '\\_', - '\\' => '\\\\', - ]; - /** * Apply filtering and pagination to a query, and generate a response suitable for datatables. * @@ -61,11 +54,9 @@ class DatatablesService // Filtering if ($search !== '') { - $search = $this->escapeLike($search); - $query->where(function (Builder $query) use ($search, $search_columns): void { foreach ($search_columns as $search_column) { - $query->orWhere($search_column, 'LIKE', '%' . $search . '%'); + $query->orWhereContains($search_column, $search); } }); } @@ -102,17 +93,4 @@ class DatatablesService 'data' => $data, ]); } - - /** - * Escape a search term, so we can use it in a LIKE clause. - * This lets us search for percent signs, underscores, etc. - * - * @param string $string - * - * @return string - */ - private function escapeLike(string $string): string - { - return strtr($string, self::ESCAPE_LIKE); - } } |
