Récupérer les résultats du modèle Laravel en fonction de plusieurs ID

109

J'ai implémenté ZendSearchdans mon Laravelapplication. Je l'utilise comme moteur de recherche où les utilisateurs taperont un mot de recherche, puis ZendSearchme renverront un tableau de résultats classés par pertinence. Cependant, le tableau qui ZendSearchretourne ne renvoie que mes ID d'enregistrement (il ne renvoie aucune des informations d'enregistrement réelles).

Quelle serait ensuite la manière correcte d'interroger mon modèle pour récupérer les résultats en fonction des résultats du ZendSearchtableau, qui n'est qu'un tableau d'ID classés en fonction de la pertinence.

Je sais Model::find(1)lequel renverrait mon enregistrement avec un ID de 1, mais comment puis-je alimenter cette find()méthode avec un tableau d'ID que je souhaite renvoyer dans l'ordre que je lui donne.

justinl
la source
Voulez-vous commenter pourquoi le vote négatif?
justinl
1
Un autre vote négatif? Pourquoi? :) La documentation de laravel ne dit même rien sur findMany () ou la possibilité de passer un tableau à la fonction find. En quoi n'est-ce pas une question légitime? :)
justinl
4
Votez pour vous, cette question m'aide. :) Je n'ai pas non plus vu findManydans le document, et c'est dans le document API .
Peter Liang

Réponses:

235

C'est simple. Utilisez findMany:

$models = Model::findMany([1, 2, 3]);

En passant, vous pouvez également passer un tableau à find()et il appellera en interne findMany:

$models = Model::find([1, 2, 3]);

Sous le capot, il fait juste un whereInpour que vous puissiez le faire aussi:

$models = Model::whereIn('id', [1, 2, 3])->get();
Lukasgeiter
la source
C'est tellement élégant et simple. Merci pour votre réponse.
chocolata
7
Vous pourriez même dire que c'est éloquent ;)
musicin3d