如今已在Laravel中实现,请参见下面的“ edit 3”。

遗憾的是,截止到今天,->orderBy(DB::raw('RAND()'))提出的解决方案有一些警告:

它与数据库无关。例如SQLite和PostgreSQL使用RANDOM()

更糟糕的是,由于此更改,此解决方案不再适用:

$direction = strtolower($direction) == 'asc' ? 'asc' : 'desc';

编辑:现在您可以使用orderByRaw()方法:->orderByRaw('RAND()')。但是,这仍然不是DB不可知的。

FWIW,CodeIgniter实现了特殊的RANDOM排序方向,在构建查询时将其替换为正确的语法。同样,它似乎很容易实现。看来我们有一个候选人可以改善Laravel :)

更新:这是关于GitHub 的问题,以及我的待处理的pull请求。

编辑2:让我们切入正题。从Laravel 5.1.18开始,您可以将宏添加到查询构建器中:

use Illuminate\Database\Query\Builder;

Builder::macro('orderByRandom', function () {

$randomFunctions = [

'mysql'  => 'RAND()',

'pgsql'  => 'RANDOM()',

'sqlite' => 'RANDOM()',

'sqlsrv' => 'NEWID()',

];

$driver = $this->getConnection()->getDriverName();

return $this->orderByRaw($randomFunctions[$driver]);

});

用法:

User::where('active', 1)->orderByRandom()->limit(10)->get();

DB::table('users')->where('active', 1)->orderByRandom()->limit(10)->get();

编辑3:最后!从Laravel 5.2.33(changelog,PR#13642)开始,您可以使用本机方法inRandomOrder():

User::where('active', 1)->inRandomOrder()->limit(10)->get();

DB::table('users')->where('active', 1)->inRandomOrder()->limit(10)->get();

laravel mysql rand_Laravel-雄辩或流利的随机行相关推荐

  1. laravel mysql rand_laravel如何从mysql数据库中随机抽取n条数据(高性能) - Laravel学习网...

    laravel如何高性能地从mysql数据库中随机获取n条数据,有时候我们常常会需要从数据库随机获取数据,比如:给工作人员随机分配10个订单,随机从数据库中随机抽查100个用户:这样我们就需要随机从数 ...

  2. mysql 返回随机行_从mysql数据库返回随机行而不使用rand()

    我希望能够从数据库中取回15条左右的记录.我已经看到,使用WHERE id = rand()会导致性能问题,因为我的数据库变得更大.我所见过的所有解决方案都适用于选择一个随机记录.我想获得倍数.从my ...

  3. mysql易百_MySQL如何选择随机记录?

    在本教程中,您将学习从MySQL的数据库表中选择随机记录的各种技术方法. 有时我们需要从表中选择随机记录,例如: 在博客中选择一些随机帖子,并在侧栏中显示. 在"每日报价"窗口小部 ...

  4. 打印查询到的mysql_从mysql查询中打印随机行

    我正在寻找一种创建协作翻译部件的方式.所以我有一个mysql数据库和表(称为翻译),以及一个允许用户一次翻译一页的小脚本. 但我不太相信我的剧本.我认为它不够高效.首先,mysql获取所有具有空'en ...

  5. 中使用mysql连接失败_如何在命令行下使用 MySQL 连接数据库不用每次都输入密码?...

    点击上方☝SpringForAll社区 轻松关注! 及时获取有趣有料的技术文章 本文来源:http://rrd.me/g7J9e 我们知道在命令行下可以使用下面的命令连接 MySQL ,其中 xxx ...

  6. 在数据框中采样随机行

    本文翻译自:Sample random rows in dataframe I am struggling to find the appropriate function that would re ...

  7. 绿色版Mysql自动建立my.ini和命令行启动并动态指定datadir路径...

    绿色版Mysql自动建立my.ini和命令行启动并动态指定datadir路径 1.先去下载绿色版的Mysql(https://cdn.mysql.com//archives/mysql-5.7/mys ...

  8. oracle 与sql serve 获取随机行数的数据

    Oracle 随机获取N条数据     当我们获取数据时,可能会有这样的需求,即每次从表中获取数据时,是随机获取一定的记录,而不是每次都获取一样的数据,这时我们可以采取Oracle内部一些函数,来达到 ...

  9. 配置mysql环境变量之后,在命令行输入mysql命令无效的解决方法

    配置mysql环境变量之后,在命令行输入mysql命令无效的解决方法 今天在win10上安装mysql5.7时遇到了一个问题:就是配完环境变量之后输入mysql命令还是无效,我在网上查到了一个解决方案 ...

  10. MySQL中给数据表插入多行数据

    有时因为测试需求,需要给某数据表中插入多行数据,所以自己就琢磨了一下,该过程实现涉及到了MySQL存储过程,想详细了解的可看下这个博客:MySQL存储过程,以下是具体的实现过程: 1.先创建一个表: ...

最新文章

  1. 半小时训练亿级规模知识图谱,亚马逊这个 AI 框架要火
  2. Alpha 冲刺 (10/10)
  3. 从文本分类来看图卷积神经网络
  4. 零基础学Python(第二十二章 常用内置函数)
  5. 夺命雷公狗—angularjs—19—angular-route
  6. 技术分享:开源矿工的超频
  7. freemarker常见语法大全
  8. DTW动态时间规整算法
  9. 图解Java中的18 把锁!
  10. 阿里云泄露 40 家名企源代码!
  11. Zabbix 结合 bat 脚本实现多个应用程序状态监控
  12. java中对象的克隆
  13. 检查linux是否安装rar,rarlinux的安装及使用
  14. 汽车之家各种车型参数爬虫
  15. Android的权限声明
  16. ps钢笔路径打不出字怎么解决?
  17. flac转mp3,flac格式如何转mp3
  18. U8 数据库服务器和应用服务器 分离后出现 登陆系统管理 远程组件初始化 失败 解决方案!
  19. OpenCV—用meanshift和Camshift进行目标追踪
  20. 基于Linux的tty架构及UART驱动详解

热门文章

  1. java决策树算法_零基础学习大数据开发技术需要哪些基础知识(1)Java、大数据基础...
  2. 实战flex:模拟实现静态知乎首页
  3. PyTorch 之 Checkpoint 机制解析
  4. AOP实践—ASP.NET MVC5 使用Filter过滤Action参数防止sql注入,让你代码安全简洁
  5. 微信端打开页面,布局乱了
  6. Xib中用自动布局设置UIScrollView的ContenSize
  7. java 小总结,以后复习看以看
  8. OpenCV中用findContours函数出现的问题和解决方法
  9. 【ubuntu操作系统入门】Ubuntu常用命令大全一
  10. 魔方机器人之下位机编程---------舵机控制