方法orderBy在Laravel Eloquent中不存在?

时间:2016-06-11 07:04:41

标签: 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();

我收到以下错误:

BadMethodCallException in Macroable.php line 81:
Method orderBy does not exist.

我想orderBy需要直接关注Product::,但我无法保存$products = Product::,是吗?

有什么建议吗?感谢。

7 个答案:

答案 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一样进行排序的变量