2015-02-13 22 views
52

Ich habe ZendSearch in meine Laravel Anwendung implementiert. Ich benutze es als meine Suchmaschine, wo Benutzer ein Suchwort eingeben, und dann gibt ZendSearch mir eine Reihe von Ergebnissen nach Relevanz geordnet zurück. Das Array, das ZendSearch zurückgibt, gibt jedoch nur meine Datensatz-ID zurück (es gibt keine der tatsächlichen Datensatzinformationen zurück).Abrufen von Laravel-Modell-Ergebnissen basierend auf mehreren IDs

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

Ich weiß von Model::find(1), die meinen Datensatz mit einer ID von 1 zurückgeben würde, aber wie kann ich diese find() Methode ein Array von IDs, die ich zurückgegeben werden soll in der Reihenfolge ich gebe es.

+0

Interessieren Sie sich, warum der Downvote? – justinl

+1

Noch ein Downvote? Warum? :) Die Laravel-Dokumente sagen nichts über findMany() oder die Fähigkeit, ein Array an die Suchfunktion zu übergeben. Wie ist das keine berechtigte Frage? :) – justinl

+4

Up Abstimmung für Sie, diese Frage hat mir geholfen. :) Ich habe 'findMany' auch nicht im Dokument gesehen und es ist im [API Dokument] (http://laravel.com/api/5.0/Illuminate/Database/Eloquent/Builder.html#method_findMany). –

Antwort

106

Das ist einfach. Verwenden Sie findMany:

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

By the way, können Sie auch ein Array find() passieren und es wird intern nennen findMany:

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

Unter der Haube hat es nur eine whereIn so konnte man das auch tun:

$models = Model::whereIn('id', [1, 2, 3])->get(); 
+2

Perfekt! Vielen Dank. Ich habe das in der Laravel-Dokumentation nicht erwähnt. – justinl

+1

Gern geschehen. Ja, leider ist es nicht in der Dokumentation aufgeführt. – lukasgeiter

0

********* sloved **** ******

Es gibt viele Wege, um dieses

Way 1 zu tun:

Model::whereIn('id',[1,2,3]); 

Way 2:

Model::findMany('id',[1,2,3]); 

Way 3:

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