Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel方法Illumb\Database\Eloquent\Collection::toSql不存在。错误_Php_Laravel 5_Eloquent - Fatal编程技术网

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());