如何在Laravel框架中使用Eloquent或Fluent选择随机行?
我知道通过使用SQL,您可以通过RAND()进行订购。但是,我想在 不 计算初始查询之前的记录数的 情况下 获得随机行。
有任何想法吗?
Laravel > = 5.2:
User::all()->random();
User::all()->random(10); // The amount of items you wish to receive
要么
User::inRandomOrder()->get();
或获取特定记录数
//5 indicates the number of records
User::inRandomOrder()->limit(5)->get();
Laravel 4.2.7-5.1:
User::orderByRaw("RAND()")->get();
Laravel 4.0-4.2.6:
User::orderBy(DB::raw('RAND()'))->get();
Laravel 3:
User::order_by(DB::raw('RAND()'))->get();
查看有关MySQL随机行的 本文 。Laravel5.2支持这一点,对于较旧的版本,没有比使用RAWQueries更好的解决方案了。
编辑1: 如DoubleGras所述,由于此更改,orderBy()不允许ASC或DESC之后的任何其他内容。我相应地更新了我的答案。
编辑2: Laravel5.2最终为此实现了包装函数。它称为 inRandomOrder() 。
我是新来的拉威尔,我曾在codeigniter工作。我对雄辩的ORM概念着迷。我有一个关于雄辩能力的一般性问题。ORM的功能是什么,我的意思是我们可以获得相关表行的级别。如果你看“http://four.laravel.com/docs/eloquent#relationships 一对一 一对多 多对多 多态关系 在我看来,“一对一”意味着一级。表1表2
在有说服力的ORM上,是否有一种较短的方法在Laravel中插入数据? 目前我正在这样做: 就像你看到的,所有的列都像属性一样命名。 我知道您可以将对象与all()函数和fetch()一起使用。但是我从另一个对象(soap服务器)获取数据。 有没有办法转换这个?也许在模型上?
我在使用laravel雄辩的ORM时遇到了一个问题。 基本上,我正在获取与用户相关的帖子,以及他的评论,但是,我正在尝试集成某种分页(我一次只想取5个帖子)。 而使用跳过方法,我总是得到以下laravel错误: 方法skip不存在。 这是我实际使用的代码片段。 有人能给我任何帮助吗? 帐户模型检索与用户相关的帖子模型(关系),但是,我想一次只收到5个帖子,用于基于ajax的请求。
我有以下三个表格: 所以基本上这种关系就像: 用户有许多项目 项目属性到客户端 我的问题是: 如何使用eloquent获得用户的所有客户端? 似乎我不能用户hasManyPass方法,因为在客户端表中没有project_id。 因此,我希望达到的目标是:
嘿,伙计们,我是拉威尔的新朋友。我有这张桌子 我如何能够获取每个科目的is_correct列计数? 谢谢伙计们!
问题内容: 我正在尝试使用Eloquent在数据库种子期间执行以下查询: 这是我在Eloquent中的实现: 尽管第一个查询始终返回完整结果,但Eloquent等价项始终为表的和字段以外的所有内容返回空元素。由于和模型都是工匠生成的骨架,因此我无所适从。 例如: 这是当我对种子(最初由Faker生成)的第一个口才查询dd()时输出的数组: 问题答案: 可以通过指定特定表中所需的特定列名来解决,如下