如何从最后 5 行中获取随机行?

How to get random row from the last 5 row?

已编辑:我想从最旧的 5 个帖子中随机抽取一行。


如何从最旧的 5 行中随机获取一行?

我在下面尝试了这些:

Post::oldest(5)->random()->first();

但是return我出错了:

Call to undefined method Illumi nate\Database\Eloquent\Builder::random()

有人知道如何以最简单的方式做到这一点吗?

Builder class 没有 random() 方法,但是 Collection 有。此外,oldest() 不采用整数作为参数,它正在寻找要使用的 column(默认使用 created_at)。

改为使用以下查询:

$posts = Post::inRandomOrder()->limit(5)->get();

注意:如果您想要多行,请不要使用 ->first()->first() returns 来自数据库的第一行,->get() returns 行在 Collection.

编辑:误读了问题。请参阅下面的查询:

$randomPost = Post::oldest()->limit(5)->get()->random();

使用初始 Post::oldest()->limit(5)->get() 得到 5 Postscreated_at 排序,然后使用 Collection 逻辑 return 通过 [=13 的单个条目=].

正如@Tim Lewis 所说,不要使用 first,而是可以写 take + 要显示的项目数

return Post::inRandomOrder()->limit(5)->get()->take(1);
//or
return Post::oldest()->take(5)->get()->random();

take 方法 returns 具有指定项目数的新集合: 在这种情况下,我们只拿了一件物品,更多信息请访问 docs 希望对你有帮助