Comment sélectionner des lignes aléatoires dans Laravel en utilisant Eloquent et Fluent ?

Barbara Streisand
Libérer: 2024-11-12 00:42:03
original
482 Les gens l'ont consulté

How to Select Random Rows in Laravel Using Eloquent and Fluent?

Sélection de lignes aléatoires dans Laravel à l'aide d'Eloquent et Fluent

Lorsque vous travaillez avec de grands ensembles de données, il est souvent nécessaire de récupérer des lignes aléatoires de la base de données sans avoir à effectuer un décompte préparatoire. Laravel propose plusieurs options pour y parvenir en utilisant les interfaces Eloquent et Fluent.

Eloquent

Laravel 5.2 et supérieur propose la méthode inRandomOrder() :

User::inRandomOrder()->get();
Copier après la connexion

Cette méthode renvoie une collection de toutes les lignes aléatoires du modèle spécifié. Pour limiter le nombre de lignes récupérées, utilisez la méthode limit() :

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

Pour récupérer une seule ligne aléatoire, utilisez la méthode first() :

User::inRandomOrder()->first();
Copier après la connexion

Pour les anciennes versions de Laravel (4.2.7 - 5.1), vous pouvez utiliser la méthode orderByRaw() :

User::orderByRaw("RAND()")->get();
Copier après la connexion

Pour les versions 4.0 de Laravel - 4.2.6, utilisez :

User::orderBy(DB::raw('RAND()'))->get();
Copier après la connexion

Fluent

Dans les versions de Laravel antérieures à 5.2, la méthode order_by() était utilisée avec le DB::raw () fonction d'assistance :

User::order_by(DB::raw('RAND()'))->get();
Copier après la connexion

Supplémentaire Considérations

Il est important de noter que la méthode orderBy() n'autorise actuellement aucun argument autre que ASC ou DESC. Par conséquent, il est nécessaire d'utiliser la méthode orderByRaw() ou la méthode inRandomOrder() pour sélectionner des lignes aléatoires.

Considérations sur les performances

Lors de la récupération d'un grand nombre de lignes, il Il est important de considérer l’impact sur les performances. L'utilisation de la méthode inRandomOrder() peut être plus efficace que la méthode orderByRaw(), car elle ne nécessite pas de sous-requête supplémentaire pour générer un ordre aléatoire.

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