Obter resultados do modelo Laravel com base em vários ID

109

Eu implementei ZendSearchem meu Laravelaplicativo. Estou usando-o como meu mecanismo de pesquisa onde os usuários digitarão uma palavra de pesquisa e, em seguida ZendSearch, retornarão uma série de resultados ordenados por relevância. No entanto, a matriz que ZendSearchretorna retorna apenas meus IDs de registro (não retorna nenhuma das informações de registro reais).

Qual seria a próxima maneira de consultar meu modelo para recuperar os resultados com base nos ZendSearchresultados da matriz, que é apenas uma matriz de IDs ordenados com base na relevância.

Eu sei Model::find(1)qual retornaria meu registro com um ID de 1, mas como posso alimentar esse find()método com uma matriz de IDs que desejo que retornem na ordem que estou fornecendo?

Justinl
fonte
Importa-se de comentar por que o downvote?
justinl
1
Outro downvote? Por quê? :) Os documentos laravel nem mesmo dizem nada sobre findMany () ou a habilidade de passar um array para a função find. Como essa pergunta não é legítima? :)
justinl
4
Vote a favor de você, esta questão me ajudou. :) Eu também não vi findManyno documento, e está no documento API .
Peter Liang

Respostas:

234

Isso é simples. Use findMany:

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

A propósito, você também pode passar uma matriz para find()e ela chamará internamente findMany:

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

Por baixo do capô, ele apenas faz whereInisso, então você também pode fazer isso:

$models = Model::whereIn('id', [1, 2, 3])->get();
lukasgeiter
fonte
É tão elegante e simples. Obrigado pela sua resposta.
chocolata
7
Você pode até dizer que é eloquente ;)
musicin3d