2015-02-13 17 views
52

Zaimplementowałem ZendSearch w mojej aplikacji Laravel. Używam go jako mojej wyszukiwarki, w której użytkownicy będą wpisywać wyszukiwane słowo, a następnie ZendSearch zwróci mi tablicę wyników uporządkowanych według trafności. Jednak tablica, która zwraca ZendSearch, zwraca tylko mój identyfikator rekordu (nie zwraca żadnej z faktycznych informacji o rekordach).Pobierz wyniki modelu Laravel na podstawie wielu ID

Jaki byłby następny sposób poprawnego wysyłania zapytań do mojego modelu w celu pobrania wyników na podstawie wyników tablicy ZendSearch, która jest po prostu tablicą identyfikatorów uporządkowanych według trafności.

Wiem o , który zwróci mój rekord z identyfikatorem 1, ale jak mogę podać, że ta metoda find() jest tablicą identyfikatorów, które chcę zwrócić w kolejności, w jakiej ją otrzymuję.

+0

Chcesz skomentować, dlaczego spadł? – justinl

+1

Kolejne zdanie? Czemu? :) Dokumenty laravel nie mówią nic o findMany() ani możliwości przekazania tablicy do funkcji find. Jak to nie jest uzasadnione pytanie? :) – justinl

+4

Głosować za tobą, to pytanie mi pomogło. :) Nie widziałem również 'findMany' w dokumencie i jest w [dokumencie API] (http://laravel.com/api/5.0/Illuminate/Database/Eloquent/Builder.html#method_findMany). –

Odpowiedz

106

To proste. Użyj findMany:

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

Nawiasem mówiąc, można także przekazać tablicę do find() i będzie wewnętrznie zadzwonić findMany:

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

Pod maską to właśnie robi whereIn więc mógłbyś zrób to również:

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

Idealny! Dzięki. Nie widziałem tego w dokumentacji Laravel. – justinl

+1

Nie ma za co. Tak, niestety nie ma ich w dokumentach. – lukasgeiter

0

********* WYSŁANY **** ******

Istnieje wiele sposobów, aby to zrobić

Way 1:

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

Way 2:

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

Way 3:

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