首页 > 解决方案 > Laravel 方法 Illuminate\Database\Eloquent\Collection::toSql 不存在。错误

问题描述

我想从数据库中搜索所有记录,然后过滤这些记录,但是当我想查看查询时

dd($posts->toSql());

它给了我错误

"Illuminate\Database\Eloquent\Collection::toSql does not exist."

它又给了我一个错误

"Method Illuminate\Database\Eloquent\Collection::paginate does not exist."
$posts = Post::all();

        if( !is_null($brand) )
            $posts = $posts->where('brand', $brand);

        if( !is_null($car_type) )
            $posts = $posts->where('car_type', $car_type);

        if( !is_null($color) ){
            $posts = $posts->where('exterior_color', $color);
        }
        $posts = $posts->whereBetween('year',[$from_year,$to_year]);   
        $posts = $posts->whereBetween('milage',[$min_milage,$max_milage]);
        $posts = $posts->whereBetween('price',[$min_price,$max_price]);

        $posts = $posts->paginate(4);

        dd($posts->toSql());

标签: phplaravel-5eloquent

解决方案


拉拉维尔:5

你不能->paginate()->toSql()之后Post::all() / Post::get()

你需要做什么 :

在下面使用:

$posts = Post::query();

if( !is_null($brand) )
    $posts = $posts->where('brand', $brand);

$posts = $posts->whereBetween('year',[$from_year,$to_year]);   
$posts = $posts->whereBetween('milage',[$min_milage,$max_milage]);
$posts = $posts->whereBetween('price',[$min_price,$max_price]);

// $posts = $posts->paginate(4);

dd($posts->toSql());

推荐阅读