Метод orderBy не существует в 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::
, могу ли я?
Любые предложения? Спасибо.
Ответы
Ответ 1
Вы пытаетесь использовать метод orderBy()
для коллекции Eloquent. Попытайтесь использовать sortByDesc()
вместо этого.
В качестве альтернативы вы можете изменить $products = Product::all();
на $products = new Product();
. Тогда весь ваш код будет работать так, как вы ожидаете.
Ответ 2
просто используйте один строковый код, который будет работать нормально
$product= Product::orderBy('created_at','desc')->get();
Ответ 3
Если вы хотите получить список всех данных и получить его в порядке убывания, попробуйте это:
$post = Post::orderBy('id', 'DESC')->get();
Ответ 4
Сначала вы получаете данные 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();
}
Надеюсь, вы получите представление о том, как настроить ваш код.
Ответ 5
Ваш запрос неверен.
удалите все из $products = Product::all()
, а затем поместите get()
в конец вашего запроса.
Ответ 6
$table_Data = DB::table('tbl_product')->orderBy('id','DESC');
Вы можете использовать это...
Ответ 7
используйте sortByDesc ('id') или простой sortBy() внутри, используйте переменную, по которой вы хотите сортировать, как я добавляю id