Recupere los resultados del modelo Laravel basados ​​en múltiples ID

108

Lo he implementado ZendSearchen mi Laravelaplicación. Lo estoy usando como mi motor de búsqueda donde los usuarios escribirán una palabra de búsqueda y luego ZendSearchme devolverán una serie de resultados ordenados por relevancia. Sin embargo, la matriz que ZendSearchdevuelve, solo devuelve mis ID de registro (no devuelve ninguna información de registro real).

¿Cuál sería la siguiente forma correcta de consultar mi modelo para recuperar los resultados basados ​​en los ZendSearchresultados de la matriz, que es solo una matriz de ID ordenados en función de la relevancia?

Model::find(1)cuál devolvería mi registro con un ID de 1, pero ¿cómo puedo alimentar ese find()método con una matriz de ID que quiero que se devuelvan en el orden en que lo estoy dando?

justinl
fuente
¿Te importaría comentar por qué el voto negativo?
justinl
1
¿Otro voto negativo? ¿Por qué? :) Los documentos de laravel ni siquiera dicen nada sobre findMany () o la capacidad de pasar una matriz a la función de búsqueda. ¿Cómo no es esta una pregunta legítima? :)
justinl
4
Vota por ti, esta pregunta me ayuda. :) Tampoco vi findManyen el documento, y está en el documento API .
Peter Liang

Respuestas:

233

Así de simple. Utilizar findMany:

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

Por cierto, también puede pasar una matriz find()y llamará internamente findMany:

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

Debajo del capó simplemente hace una cosa whereInpara que tú también puedas hacer eso:

$models = Model::whereIn('id', [1, 2, 3])->get();
lukasgeiter
fuente
Es tan elegante y simple. Gracias por tu respuesta.
Chocolata
7
Incluso podrías decir que es elocuente ;)
musicin3d