如何在Laravel框架中使用Elount或Fluent Select 随机行?

我知道通过使用SQL,您可以按RAND()进行排序.然而,我想让随机行without在初始查询之前对记录数进行计数.

有什么 idea 吗?

推荐答案

Laravel >= 5.2:

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

或者获取特定数量的记录

// 5 indicates the number of records
User::inRandomOrder()->limit(5)->get();
// get one random record
User::inRandomOrder()->first();

或对集合使用random方法:

User::all()->random();
User::all()->random(10); // The amount of items you wish to receive

Laravel 4.2.7-5.1:

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

Laravel 4.0-4.2.6:

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

拉威尔3:

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

在MySQL随机行上判断100.Laravel 5.2支持这一点,对于旧版本,没有比使用RAW Queries更好的解决方案了.

edit 1:正如Double Gras所提到的,orderBy()不允许除ASC或DESC之外的任何内容,因为this发生了变化.我相应地更新了我的答案.

edit 2:Laravel 5.2最终为此实现了a wrapper function.它叫inRandomOrder().

Php相关问答推荐

通过激活模板在数据库中创建表

在函数内部获取一致的单选按钮值以更新WordPress用户数据

如何在不指定symfony列的情况下从数据库中获取行数组

在WooCommerce中添加基于类别的固定费用

Laravel Livewire如何在数组值上使用IF、ELSE条件

PHP测试字符串的所有POST值

免费送货柜台,考虑到折扣码

WordPress:今天的计数';修改和发布的帖子

显示自定义 Laravel 9 公共属性的错误

在 WooCommerce 订阅续订订单中设置送货方式

如何在 Laravel 迁移中使用日期时间和天数?

图片上传成功

Laravel 添加到经过身份验证的用户的数据将应用于每个查询

Shopware 6.4.20店铺激活问题

服务器遇到内部错误或配置错误,无法完成您的请求

将 HTML 表单链接到 SQLite 数据库

列表不在 GROUP BY 子句中并且包含 X2CRM 中的非聚合列

如何从 PHP 中的字符串位置排除图像扩展名

PHP Remedy API 调用以创建附件无效的条目(使用 Postman Works!)

用于多态服务的 Symfony setter 注入