使用 Eloquent 和 Fluent 在 Laravel 中选择随机行
在处理大型数据集时,通常需要从数据库中检索随机行无需执行准备计数。 Laravel 提供了多种使用 Eloquent 和 Fluent 接口来实现此目的的选项。
Eloquent
Laravel 5.2 及更高版本提供了 inRandomOrder() 方法:
User::inRandomOrder()->get();
此方法返回指定模型中所有随机行的集合。要限制检索的行数,请使用 limit() 方法:
User::inRandomOrder()->limit(5)->get();
要检索单个随机行,请使用 first() 方法:
User::inRandomOrder()->first();
对于旧版本在 Laravel (4.2.7 - 5.1) 中,您可以使用 orderByRaw() 方法:
User::orderByRaw("RAND()")->get();
对于Laravel 版本 4.0 - 4.2.6,使用:
User::orderBy(DB::raw('RAND()'))->get();
Fluent
在 Laravel 5.2 之前的版本中,order_by() 方法与数据库一起使用::raw() 助手函数:
User::order_by(DB::raw('RAND()'))->get();
其他注意事项
需要注意的是,orderBy() 方法目前不允许使用除 ASC 或 DESC 之外的任何参数。因此,需要使用 orderByRaw() 方法或 inRandomOrder() 方法来随机选择行。
性能注意事项
检索大量行时,考虑对性能的影响很重要。使用 inRandomOrder() 方法可能比使用 orderByRaw() 方法更有效,因为它不需要额外的子查询来生成随机排序。
以上是如何使用 Eloquent 和 Fluent 在 Laravel 中选择随机行?的详细内容。更多信息请关注PHP中文网其他相关文章!