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

48

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

Что будет дальше, это правильный способ запроса моей модели на получение результатов на основе результатов массива ZendSearch, который представляет собой всего лишь массив идентификаторов, упорядоченных по релевантности.

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

  • 0
    Хотите прокомментировать, почему понизить?
  • 1
    Еще один голос? Зачем? :) Документы laravel даже не говорят ни о findMany (), ни о способности передавать массив в функцию find. Как это не законный вопрос? :)
Показать ещё 1 комментарий
Теги:
eloquent
relevance
zend-search-lucene

1 ответ

98
Лучший ответ

Это просто. Используйте findMany:

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

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню