web-dev-qa-db-fra.com

Méthode orderBy n'existe pas à Laravel Eloquent?

J'ai un morceau de code comme ceci:

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

J'ai eu l'erreur suivante:

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

Je suppose que orderBy doit suivre Product:: directement, mais je ne peux pas enregistrer $products = Product::, puis-je?

Aucune suggestion? Merci.

12
Harrison

Vous essayez d'utiliser la méthode orderBy() sur la collection Eloquent. Essayez d'utiliser sortByDesc() à la place.

Vous pouvez également changer $products = Product::all(); en $products = new Product();. Ensuite, tout votre code fonctionnera comme prévu.

22
Alexey Mezenin

il suffit d'utiliser le code d'une ligne, cela fonctionnera bien

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

Vous obtenez d’abord les données all(), puis vous essayez de trier ce qui est faux. Vous devez résoudre ce problème en supprimant 

$products = Product::all()

et changer votre code en quelque chose comme ça 

if ($search_value) {
    $products = Product::where('name', 'LIKE', "%$search_value%");
}
else {
    $products = Product::orderBy('created_at', 'desc')->skip(10)->take(10)->with('tags')->get();
}

J'espère que vous aurez l'idée de modifier votre code.

0
KuKeC

Votre requête est fausse.

tout supprimer de $products = Product::all() et mettre get() à la fin de votre requête.

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

Vous pouvez utiliser ceci ...

0
Viral M