Php 方法orderBy在Laravel Eloquent中不存在?

Php 方法orderBy在Laravel Eloquent中不存在?,php,laravel,eloquent,Php,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(); 我得到了以

我有一段代码如下:

$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
需要直接遵循
产品:
,但我无法保存
$products=Product:
,可以吗


有什么建议吗?谢谢。

您正在尝试对雄辩的收藏使用
orderBy()
方法。试着用它来代替


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

首先获取
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()
放在查询的末尾。

只需使用单行代码即可

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

您可以使用此…

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

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

使用或简单内部使用变量,通过该变量进行排序,就像我添加id一样

是否可以将
雄辩的模型
(即
产品
)分配给
$products
,而不是获取包含所有ReoCRD的集合?当然。您可以更改
$products=Product::all()
$products=新产品()这是我目前的工作……但我尽量避免做两次
orderBy
skip
,等等
$post = Post::orderBy('id', 'DESC')->get();