Php Laravel方法Illumb\Database\Eloquent\Collection::toSql不存在。错误
我想搜索数据库中的所有记录,然后过滤这些记录,但当我想查看查询时Php Laravel方法Illumb\Database\Eloquent\Collection::toSql不存在。错误,php,laravel-5,eloquent,Php,Laravel 5,Eloquent,我想搜索数据库中的所有记录,然后过滤这些记录,但当我想查看查询时 dd($posts->toSql()); 这给了我一个错误 “Illumb\Database\Eloquent\Collection::toSql不存在。” 这又给了我一个错误 “方法Illumb\Database\Eloquent\Collection::paginate不存在。” $posts=Post::all(); 如果(!为空($brand)) $posts=$posts->where('brand',$brand
dd($posts->toSql());
这给了我一个错误
“Illumb\Database\Eloquent\Collection::toSql不存在。”
这又给了我一个错误
“方法Illumb\Database\Eloquent\Collection::paginate不存在。”
$posts=Post::all();
如果(!为空($brand))
$posts=$posts->where('brand',$brand);
如果(!为空($car\u type))
$posts=$posts->where('car\u type',$car\u type);
如果(!为null($color)){
$posts=$posts->where('external_color',$color);
}
$posts=$posts->whereBetween('year',[$from_year,$to_year]);
$posts=$posts->whereBetween('milage',[$min\u milage,$max\u milage]);
$posts=$posts->whereBetween('price',[$min\u price,$max\u price]);
$posts=$posts->paginate(4);
dd($posts->toSql());
首先,将Post::all()
替换为Post::query()
。您正在获取所有结果,然后再开始筛选
paginate()
方法将执行查询并将结果加载到集合
,这意味着您正在对集合而不是查询生成器实例调用toSql()
因此,您应该在调用paginate()
之前调用toSql()
,或者如果您想查看分页约束,您可以在服务提供商中运行查询/之前执行以下操作
使用light\Support\Facades\DB;
// ...
DB::listen(函数($query){
变量转储($query->sql);
});
Laravel:5
在Post::all()/Post::get()
您需要做的是:
使用方法如下:
$posts=Post::query();
如果(!为空($brand))
$posts=$posts->where('brand',$brand);
$posts=$posts->whereBetween('year',[$from_year,$to_year]);
$posts=$posts->whereBetween('milage',[$min\u milage,$max\u milage]);
$posts=$posts->whereBetween('price',[$min\u price,$max\u price]);
//$posts=$posts->paginate(4);
dd($posts->toSql());