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?


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();

É tão elegante e simples. Obrigado pela sua resposta.
chocolata

7
Você pode até dizer que é eloquente ;)
musicin3d
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.