Pobierz wyniki modelu Laravel na podstawie wielu identyfikatorów

110

Wdrożyłem ZendSearchdo mojej Laravelaplikacji. Używam go jako mojej wyszukiwarki, w której użytkownicy wpisują wyszukiwane słowo, a następnie ZendSearchzwracają mi tablicę wyników uporządkowanych według trafności. Jednak tablica, która ZendSearchzwraca, zwraca tylko moje identyfikatory rekordów (nie zwraca żadnych rzeczywistych informacji o rekordzie).

Jaki byłby następny prawidłowy sposób wysłania zapytania do mojego modelu w celu pobrania wyników na podstawie ZendSearchwyników tablicy, która jest po prostu tablicą identyfikatorów uporządkowanych na podstawie trafności.

Wiem, Model::find(1)który zwróciłby mój rekord z identyfikatorem 1, ale jak mogę podać tej find()metodzie tablicę identyfikatorów, które chcę, aby były zwracane w kolejności, w jakiej je podam.

justinl
źródło
Chcesz skomentować, dlaczego głos przeciw?
justinl
1
Kolejny głos przeciw? Czemu? :) Dokumentacja laravel nie mówi nawet nic o findMany () ani o możliwości przekazania tablicy do funkcji find. Dlaczego to nie jest uzasadnione pytanie? :)
justinl
4
Głosujcie na was, to pytanie pomogło mi. :) Ja też nie widziałem findManyw dokumencie, a jest to w dokumencie API .
Peter Liang,

Odpowiedzi:

236

To proste. Zastosowanie findMany:

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

Nawiasem mówiąc, możesz również przekazać tablicę find(), która wewnętrznie wywoła findMany:

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

Pod maską to po prostu robi, whereInwięc możesz to zrobić:

$models = Model::whereIn('id', [1, 2, 3])->get();
lukasgeiter
źródło
To takie eleganckie i proste. Dziękuję za odpowiedź.
czekoladę
7
Można nawet powiedzieć, że to elokwentne ;)
musicin3d