фильтры содержат один простой поисковый вход< /code> и одно поле выбора.
они запускают вызов API к серверу, который при использовании обоих выглядит следующим образом
Код: Выделить всё
http://127.0.0.1:8000/api/user?&search=jom&type=admin
Код: Выделить всё
public function index(Request $request) {
$search = $request->input('search');
$type = $request->input('type');
$user = User::select('*');
$this->checkSearch($user, $search); // check for search
$this->filterUserType($user, $type); // filter user type
...
Код: Выделить всё
private function checkSearch(&$query, $search) {
if (!isset($query)) {
return $query;
}
if (!is_null($search)) {
$searchTerms = $this->stringToArray($search, ' ');
$query = $query->where(function ($query) use ($searchTerms) {
for ($i = 0, $max = count($searchTerms); $i < $max; $i++) {
$term = str_replace('_', '\_', mb_strtolower('%' . $searchTerms[$i] . '%'));
$query->whereRaw("(Lower(name) LIKE ?)", [$term, $term])
->orWhereRaw("(Lower(bio) LIKE ?)", [$term, $term]);
}
});
}
}
Код: Выделить всё
private function filterUserType(&$query, $type) {
if (!isset($query)) { return $query; }
if (!is_null($type)) {
$query = $query->where( 'type', $type);
}
}
Я пытался проверить, где в методе filterUserType, на orWhere, но это просто возвращает значения обоих, не объединенные.
п>
Подробнее здесь: https://stackoverflow.com/questions/630 ... pty-object
Мобильная версия