我有一段这样的代码:
$products = Product::all()
if ($search_value) {
$products = $products->where('name', 'LIKE', "%$search_value%");
}
$products = $products->orderBy('created_at', 'desc')->skip(10)->take(10)->with('tags')->get();
我收到以下错误:
BadMethodCallException in Macroable.php line 81:
Method orderBy does not exist.
我想orderBy
需要直接关注Product::
,但我无法保存$products = Product::
,是吗?
有什么建议吗?感谢。
答案 0 :(得分:23)
您尝试在Eloquent收集中使用orderBy()
方法。请尝试使用sortByDesc()
。
或者,您可以将$products = Product::all();
更改为$products = new Product();
。然后,您的所有代码都将按预期工作。
答案 1 :(得分:16)
只需使用一行代码即可正常使用
$product= Product::orderBy('created_at','desc')->get();
答案 2 :(得分:1)
如果要获取所有数据列表并以降序顺序抓取,请尝试以下操作:
$post = Post::orderBy('id', 'DESC')->get();
答案 3 :(得分:0)
您首先获取all()
数据,然后尝试排序哪个错误。您必须通过删除
$products = Product::all()
并将您的代码更改为此类
if ($search_value) {
$products = Product::where('name', 'LIKE', "%$search_value%");
}
else {
$products = Product::orderBy('created_at', 'desc')->skip(10)->take(10)->with('tags')->get();
}
希望您能够调整代码。
答案 4 :(得分:0)
您的查询错误。
从$products = Product::all()
中移除所有内容,然后将get()
放在查询的末尾。
答案 5 :(得分:0)
$table_Data = DB::table('tbl_product')->orderBy('id','DESC');
您可以使用此...
答案 6 :(得分:0)
在内部使用sortByDesc('id')或简单的sortBy()使用您要像我添加id一样进行排序的变量