方法orderBy在Laravel Eloquent中不存在?

问题描述 投票:13回答:6

我有一段这样的代码:

$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::,可以吗?

有什么建议?谢谢。

php laravel eloquent
6个回答
24
投票

你试图在Eloquent集合中使用orderBy()方法。尝试使用sortByDesc()代替。

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


16
投票

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

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

1
投票

如果要获取所有数据的列表并按降序获取,请尝试以下操作:

$post = Post::orderBy('id', 'DESC')->get();

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();
}

希望您能够调整代码。


0
投票

你的查询错了。

$products = Product::all()中删除所有内容,然后在查询结尾处放置get()


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

你可以用这个......


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.