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!