Maison  >  Article  >  développement back-end  >  Comment récupérer des lignes aléatoires dans Laravel en utilisant Eloquent ou Fluent ?

Comment récupérer des lignes aléatoires dans Laravel en utilisant Eloquent ou Fluent ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-16 12:31:03410parcourir

How to Retrieve Random Rows in Laravel Using Eloquent or 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn