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

Patricia Arquette
Libérer: 2024-11-16 12:31:03
original
409 Les gens l'ont consulté

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();
Copier après la connexion

Pour récupérer un nombre spécifique d'enregistrements aléatoires, utilisez la méthode limit() :

$randomUsers = User::inRandomOrder()->limit(5)->get();
Copier après la connexion

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();
Copier après la connexion

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();
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal