Я делаю "простой" API для Laravel.Этот API должен работать с фильтрами, нумерацией страниц и сортировкой результата.Для этого я использую конструктор запросов laravel.Проблема в том, что он делает выбор без имени таблицы, например:
select * order by `id` asc
Мой код:
public function index()
{
$request = request();
$query = DB::table('customers')->newQuery();
// Orden
if (request()->has('sort')) {
// Multiorden
$sorts = explode(',', request()->sort);
foreach ($sorts as $sort) {
list($sortCol, $sortDir) = explode('|', $sort);
$query = $query->orderBy($sortCol, $sortDir);
}
} else {
$query = $query->orderBy('id', 'asc');
}
//Filtros
if ($request->exists('filter')) {
$query->where(function($q) use($request) {
$value = "%{$request->filter}%";
$q->where('name', 'like', $value)
->orWhere('address', 'like', $value);
});
}
$perPage = request()->has('per_page') ? (int) request()->per_page : null;
$pagination = $query->get()->paginate($perPage);
$pagination->appends([
'sort' => request()->sort,
'filter' => request()->filter,
'per_page' => request()->per_page
]);
return response()->json(
$pagination
);
}
Ошибка:
Подсветить \База данных \ QueryException: SQLSTATE [HY000]: общая ошибка: 1096 Таблицы не используются (SQL: выберите * упорядочить по id
asc) в файле C: \ xampp \ htdocs \ iService \ vendor \ laravel \ framework \ src \ Illuminate \ Database\ Connection.php в строке 664
ОБНОВЛЕНИЕ :
return DB::table('customers')->get();
Если я использую это, API-интерфейс работает нормально, у меня работает больше API-интерфейса.Проблема в том, что мне нужен Query Builder для обработки фильтров, сортировки и т. Д. *