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

110

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

Каким будет следующий правильный способ запросить мою модель для получения результатов на основе ZendSearchрезультатов массива, который представляет собой просто массив идентификаторов, упорядоченных на основе релевантности.

Я знаю, Model::find(1)что вернет мою запись с идентификатором 1, но как я find()могу передать этому методу массив идентификаторов, которые я хочу вернуть, в том порядке, в котором я его даю.

Justinl
источник
Хотите прокомментировать, почему голосование против?
Justinl
1
Еще один голос против? Зачем? :) В документации laravel даже ничего не говорится о findMany () или возможности передать массив функции find. Почему это не законный вопрос? :)
Justinl
4
Голосуйте за вас, этот вопрос мне помог. :) Я тоже не видел findManyв документе, а это в документе API .
Питер Лян

Ответы:

236

Все просто. Использование 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