Rufen Sie die Ergebnisse des Laravel-Modells basierend auf mehreren IDs ab

108

Ich habe ZendSearchin meine LaravelAnwendung implementiert . Ich verwende es als meine Suchmaschine, in der Benutzer ein Suchwort eingeben und ZendSearchmir dann eine Reihe von Ergebnissen zurückgeben, die nach Relevanz geordnet sind. Das Array, das ZendSearchzurückgibt, gibt jedoch nur meine Datensatz-IDs zurück (es gibt keine der tatsächlichen Datensatzinformationen zurück).

Was wäre als nächstes der richtige Weg, um mein Modell abzufragen, um die Ergebnisse basierend auf den ZendSearchArray-Ergebnissen abzurufen, bei denen es sich nur um ein Array von IDs handelt, die nach Relevanz geordnet sind.

Ich weiß, Model::find(1)welche meinen Datensatz mit einer ID von 1 zurückgeben würden, aber wie kann ich dieser find()Methode ein Array von IDs zuführen, die ich in der Reihenfolge zurückgeben möchte, in der ich sie gebe.

justinl
quelle
Möchtest du kommentieren, warum das Downvote?
Justin
1
Noch eine Ablehnung? Warum? :) Die Laravel-Dokumente sagen nicht einmal etwas über findMany () oder die Fähigkeit, ein Array an die Suchfunktion zu übergeben. Wie ist das keine legitime Frage? :)
Justin
4
Bei der Abstimmung für Sie hat mir diese Frage geholfen. :) Ich habe es auch nicht findManyim Dokument gesehen und es ist im API-Dokument .
Peter Liang

Antworten:

233

Das ist einfach. Verwendung findMany:

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

Übrigens können Sie auch ein Array an übergeben find()und es wird intern aufgerufen findMany:

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

Unter der Haube macht es einfach ein, whereIndamit du das auch machen kannst:

$models = Model::whereIn('id', [1, 2, 3])->get();
lukasgeiter
quelle
Es ist so elegant und einfach. Danke für deine Antwort.
Chocolata
6
Man könnte sogar sagen, es ist beredt ;)
musicin3d