getModel()->getTable(); $query = $query->where(function ($q) use ($field, $search, $table) { 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) use ($table) { return "`$table`.`$q`"; })->implode(', \' \', ')), ["%$search%"] ); } else { $q->orWhereRaw("UPPER(`$table`.`$f`) LIKE UPPER(?)", ["%$search%"]); } } }); } return $query; } /** * Sort columns with a query * * @param Builder $query * @param array $ignore * @return Builder */ protected function sortQuery(Builder $query, array $ignore = []): Builder { $rName = request()->route()->getName(); $table = $query->getModel()->getTable(); if (request()->sort_col) { Session::put("$rName.sort_col", request()->sort_col); } else { Session::remove("$rName.sort_col"); } if (request()->sort_way) { Session::put("$rName.sort_way", request()->sort_way); } else { Session::remove("$rName.sort_way"); } if (request()->sort_col and request()->sort_way) { if ( !isset($ignore) or (isset($ignore) and !in_array(request()->sort_col, $ignore)) ) { $query = $query->orderBy(\sprintf("$table.%s", request()->sort_col), request()->sort_way); } } elseif (Schema::hasColumn($table, 'order')) { $query = $query->orderBy('order', 'ASC'); Session::put("$rName.sort_col", 'order'); Session::put("$rName.sort_way", 'asc'); } Session::save(); return $query; } }