Recupera i risultati del modello Laravel in base a più ID


109

Ho implementato ZendSearchnella mia Laravelapplicazione. Lo sto usando come motore di ricerca in cui gli utenti digiteranno una parola di ricerca e quindi ZendSearchmi restituiranno una serie di risultati ordinati per pertinenza. Tuttavia, l'array che ZendSearchrestituisce restituisce solo l'ID del mio record (non restituisce nessuna delle informazioni sul record effettivo).

Quale sarebbe il modo corretto per interrogare il mio modello per recuperare i risultati in base ai ZendSearchrisultati dell'array che è solo un array di ID ordinati in base alla pertinenza.

So di Model::find(1)quale restituirebbe il mio record con un ID di 1, ma come posso fornire a quel find()metodo un array di ID che desidero essere restituito nell'ordine in cui lo sto dando.


Ti interessa commentare perché il voto negativo?
justinl

1
Un altro voto negativo? Perché? :) I documenti di laravel non dicono nemmeno nulla su findMany () o sulla capacità di passare un array alla funzione find. In che modo questa non è una domanda legittima? :)
justinl

4
Su per votare per te, questa domanda mi ha aiutato. :) Non ho visto nemmeno findManynel documento, ed è nel documento API .
Peter Liang

Risposte:


235

È semplice. Usa findMany:

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

A proposito, puoi anche passare un array a find()e internamente chiamerà findMany:

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

Sotto il cofano fa solo un whereIncosì potresti farlo anche tu:

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

È così elegante e semplice. Grazie per la tua risposta.
cioccolata il

7
Potresti anche dire che è eloquente ;)
musicin3d
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.