Maison >développement back-end >tutoriel php >Comment sélectionner des lignes aléatoires dans Laravel en utilisant Eloquent et Fluent ?

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

Barbara Streisand
Barbara Streisandoriginal
2024-11-12 00:42:03599parcourir

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();

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();

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

User::inRandomOrder()->first();

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

User::orderByRaw("RAND()")->get();

Pour les versions 4.0 de Laravel - 4.2.6, utilisez :

User::orderBy(DB::raw('RAND()'))->get();

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();

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!

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