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


110

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

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

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


Хотите прокомментировать, почему голосование против?
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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.