方法顺序在Laravel Eloquent中不存在



我有一段这样的代码:

$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::,对吧?

有什么建议吗?谢谢。

您正在尝试在 Eloquent 集合上使用orderBy()方法。尝试改用sortByDesc()

或者,您可以将$products = Product::all();更改为 $products = new Product(); 。然后,您的所有代码都将按预期工作。

只需使用一行代码即可正常工作

$product= Product::orderBy('created_at','desc')->get();
使用

sortByDesc('id') 或简单的 sortBy() 里面使用你想要排序的变量,就像我添加 id

您首先获取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();
}

希望您有调整代码的想法。

您的查询是错误的。

$products = Product::all()中删除所有内容,然后将get()放在查询的末尾。

$table_Data = DB::table('tbl_product')->orderBy('id','DESC');

你可以使用这个...

最新更新