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

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

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

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


person justinl    schedule 13.02.2015    source источник
comment
Хотите прокомментировать, почему голосование против?   -  person justinl    schedule 14.02.2015
comment
Еще один голос против? Почему? :) В документации laravel даже ничего не говорится о findMany () или возможности передать массив функции find. Почему это не законный вопрос? :)   -  person justinl    schedule 22.02.2015
comment
Голосуйте за вас, этот вопрос мне помог. :) Я тоже не видел findMany в документе, а он в документ API.   -  person Peter Liang    schedule 27.04.2015


Ответы (1)


Все просто. Используйте 1_:

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

Кстати, вы также можете передать массив в find(), и он будет внутренне вызывать findMany:

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

Под капотом он просто whereIn, так что вы тоже можете это сделать:

$models = Model::whereIn('id', [1, 2, 3])->get();
person lukasgeiter    schedule 13.02.2015
comment
Это так элегантно и просто. Спасибо за Ваш ответ. - person chocolata; 19.03.2020
comment
Можно даже сказать, что это красноречиво;) - person musicin3d; 21.04.2020
comment
Это как раз то, что мне нужно! - person Abdul Rehman Khan; 17.03.2021