上阅读更多
我有一个laravel hasmany的关系,我想从表格中获取最后10条评论,并以降序订购。这就是我的桌子的样子
id | user_id | comment_text
----------------------------------------------------------
1 30 foo
2 23 bar
3 17 hello
4 30 world
5 12 lorem
6 10 ipsum
7 17 dummy
我的结果应该是
id | user_id | comment_text
----------------------------------------------------------
5 12 lorem
6 10 ipsum
7 17 dummy
我如何运行查询以获取预期结果
SELECT * FROM (
SELECT * FROM comments ORDER BY id DESC LIMIT 3
) sub
ORDER BY id ASC
我该如何在Laravel模型中执行此操作?我可以在恋爱关系中运行一个子查询吗?到目前为止,这是我的实施
public function latestComments($limit = 3)
{
return $this->hasMany(Comment::class)
->orderByDesc('id')
->limit($limit);
}
您在正确的路径上,只需稍微纠正一点:
public function latestComments($limit = 3)
{
return $this->hasMany(Comment::class)
->orderBy('id', 'desc')
->take($limit);
}
您可以在官方文档
take
和orderBy
我找到了工作。使用Laravel的reverse
功能,我能够获得所需的结果,我需要做的就是在属性上调用reverse
。
$post->latestComments->reverse()