Отримати результати моделі Laravel на основі декількох ідентифікаторів


108

Я реалізував ZendSearchсвою Laravelзаявку. Я використовую його як свою пошукову систему, де користувачі вводять пошукове слово, а потім ZendSearchповернуть мені масив результатів, упорядкованих за релевантністю. Однак масив, який ZendSearchповертається, повертає лише ідентифікатори мого запису (він не повертає жодної фактичної інформації запису).

Наступним буде правильний спосіб запиту моєї моделі для отримання результатів на основі ZendSearchрезультатів масиву, який є лише масивом упорядкованих ідентифікаторів на основі релевантності.

Я знаю, Model::find(1)який би повертав мій запис із ідентифікатором 1, але як я можу подати цей find()метод масиву ідентифікаторів, які я хочу повернути в тому порядку, яким я його надаю.


Бажаєте коментувати, чому сутінка?
Justinl

1
Ще один голос? Чому? :) Документи laravel навіть нічого не говорять про findMany () або можливість передавати масив функції пошуку. Як це не є законним питанням? :)
justinl

4
Під час голосування за вас це питання мені допомагає. :) Я також не бачив findManyу документі, і це в документі API .
Пітер Лян

Відповіді:


233

Це просто. Використання findMany:

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

До речі, ви також можете передати масив find()і він внутрішньо зателефонує findMany:

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

Під капотом це просто whereInтак, щоб ви могли це зробити також:

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

Це так елегантно і просто. Дякую за вашу відповідь.
chocolata

7
Можна навіть сказати, що це красномовно ;)
musicin3d
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.