我正试图从控制器中分页命令,如
$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.
答案 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);