Laravel - 方法分页不存在

时间:2018-06-14 07:43:16

标签: php laravel

我正试图从控制器中分页命令,如

 $orders = Order::openorders()->paginate(15);

在模型中我有这个:

public static function openorders()
{
    return Order::where(\DB::raw('SUBSTRING(cu_stat, 1, 1)'), '!=','C')->where('cu_stat', 'NOT LIKE', '%D%')->where('cu_stat', 'NOT LIKE', '%X%')->get()->sortByDesc('cu_date');
}

并显示此消息:

(1/1) BadMethodCallException 
Method paginate does not exist.

4 个答案:

答案 0 :(得分:3)

方法链接是指this您无法链接此类静态和公共方法但您可以利用scopes()

像这样更改方法的名称。

public  function scopeOpenorders($query)
{
    return $query->where(\DB::raw('SUBSTRING(cu_stat, 1, 1)'), '!=','C')
         ->where('cu_stat', 'NOT LIKE', '%D%')->where('cu_stat', 'NOT LIKE', '%X%')
         ->orderBy('cu_date','DESC');
}

您可以在此处详细了解示波器 https://laravel.com/docs/5.6/eloquent#local-scopes

希望这有帮助。

答案 1 :(得分:1)

paginate结果后,您无法使用get方法。因此发生了错误,

    public static function openorders() {
           return Order::where(\DB::raw('SUBSTRING(cu_stat, 1, 1)'), '!=','C')->where('cu_stat', 'NOT LIKE', '%D%')->where('cu_stat', 'NOT LIKE', '%X%')->orderBy('cu_date', 'desc');
     }

我希望这会对你有所帮助

答案 2 :(得分:0)

而不是sortByDesc,我使用了

orderBy('cu_date', 'desc')->paginate(15)

在模型中它起作用了

型号:

return Order::where(\DB::raw('SUBSTRING(cu_stat, 1, 1)'), '!=','C')->where('cu_stat', 'NOT LIKE', '%D%')->where('cu_stat', 'NOT LIKE', '%X%')->orderBy('cu_date', 'desc')->paginate(15);

和控制器:

$orders = Order::openorders();

答案 3 :(得分:0)

模特:

public static function openorders($sort='cu_date',$sort_type='asc',$count=10)
{
    return Order::where(\DB::raw('SUBSTRING(cu_stat, 1, 1)'), '!=','C')->where('cu_stat', 'NOT LIKE', '%D%')->where('cu_stat', 'NOT LIKE', '%X%')->orderBy($sort, $sort_type)->paginate($count);
}

控制器:

$orders=Order::openorders('cu_date','asc',1);