Laravel数据库查询生成器错误与表名称
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel数据库查询生成器错误与表名称相关的知识,希望对你有一定的参考价值。
我正在为laravel做一个“简单”的api。这个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
);
}
错误:
Illuminate Database QueryException:SQLSTATE [HY000]:常规错误:1096文件C: xampp htdocs iService vendor laravel framework src Illuminate Database中没有使用的表(SQL:select * order by
id
asc)第664行的 Connection.php
更新:
return DB::table('customers')->get();
如果我使用它,api工作正常,我有更多的apis工作。问题是我需要Query Builder来处理过滤器,排序等...
答案
问题是我实例化新查询的方式。
$query = DB::table('customers')->newQuery();
正确:
$query = Model::query();
对于我的例子:
$query = Customer::query();
以上是关于Laravel数据库查询生成器错误与表名称的主要内容,如果未能解决你的问题,请参考以下文章