Maison > Article > développement back-end > Comment récupérer des lignes aléatoires dans Laravel en utilisant Eloquent ou Fluent ?
Sélection de lignes aléatoires avec Eloquent ou Fluent dans Laravel
Récupérer des lignes aléatoires à partir d'une table de base de données est une tâche courante dans les applications Web. Laravel fournit plusieurs méthodes pour accomplir cette tâche en utilisant le générateur de requêtes Eloquent ou Fluent.
Utilisation d'Eloquent (Laravel >= 5.2)
Depuis Laravel 5.2, le framework introduit la méthode inRandomOrder() qui fournit un moyen pratique de récupérer des lignes aléatoires. Le code suivant illustre comment l'utiliser :
$randomUsers = User::inRandomOrder()->get();
Pour récupérer un nombre spécifique d'enregistrements aléatoires, utilisez la méthode limit() :
$randomUsers = User::inRandomOrder()->limit(5)->get();
Vous pouvez également utiliser la méthode random () méthode fournie par les collections pour récupérer un seul enregistrement aléatoire :
$randomUser = User::all()->random();
Utilisation de Fluent (Laravel < 5.2)
Pour les versions de Laravel antérieures à 5.2, vous pouvez utiliser la méthode orderByRaw() de Fluent pour trier les résultats de manière aléatoire :
$randomUsers = User::orderByRaw(DB::raw('RAND()'))->get();<p><strong>Utiliser SQL avec Fluent</strong></p> <p>Si vous préférez utiliser du SQL pur, vous pouvez écrire la requête suivante dans votre instruction Fluent :</p> <pre class="brush:php;toolbar:false">$randomUsers = DB::table('users')->orderByRaw('RAND()')->get();
Notez que cette approche vous oblige à compter le nombre d'enregistrements avant la requête initiale, ce qui peut être inefficace pour les grands ensembles de données.
Conclusion
La sélection de lignes aléatoires dans Laravel peut être réalisée en utilisant Eloquent ou Fluent. La méthode inRandomOrder() dans Eloquent fournit le moyen le plus efficace et le plus simple de le faire pour Laravel 5.2 et supérieur. Pour les anciennes versions, la méthode orderByRaw() de Fluent offre une alternative viable, même si elle présente certaines limites.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!