Метод 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