[英]Laravel hasMany sub-query
我有一個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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.