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.


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

Es ist so elegant und einfach. Danke für deine Antwort.
Chocolata

6
Man könnte sogar sagen, es ist beredt ;)
musicin3d
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.