如何从最后 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 Posts
按 created_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
希望对你有帮助
已编辑:我想从最旧的 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 Posts
按 created_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
希望对你有帮助