ldc-legaulois/app/Http/Controllers/Controller.php

51 lines
1.6 KiB
PHP
Raw Normal View History

2020-07-23 10:29:36 +02:00
<?php
namespace App\Http\Controllers;
use Illuminate\Database\Eloquent\Builder;
2020-07-23 10:29:36 +02:00
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
2021-03-20 14:38:15 +01:00
use AuthorizesRequests;
use DispatchesJobs;
use ValidatesRequests;
/**
* Undocumented function
*
* @param Builder $query The eloquent query builder
* @param string $search The query string
* @param string|array ...$field Either a simple array or a string
* In case of a string the two fields would be concatenate to make the search
* @return Builder
*/
protected function searchQuery(
Builder $query,
string $search,
...$field
): Builder {
if (count($field)) {
$query = $query->where(function ($q) use ($field, $search) {
foreach ($field as $f) {
$f = str_replace('?', '\?', $f);
if (is_array($f)) {
$q->orWhereRaw(
sprintf('UPPER(CONCAT(%s)) LIKE UPPER(?)', collect($f)->map(function ($q) {
return "`$q`";
})->implode(', \' \', ')),
["%$search%"]
);
} else {
$q->orWhereRaw("UPPER(`$f`) LIKE UPPER(?)", ["%$search%"]);
}
}
});
}
return $query;
}
2020-07-23 10:29:36 +02:00
}