簡體   English   中英

Laravel有很多子查詢

[英]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);
}

你可以閱讀更多的takeorderBy了對官方的文檔

我找到了一個解決方法。 使用Laravel的reverse功能,我能夠獲得所需的結果,我需要做的就是在屬性上調用reverse

$post->latestComments->reverse()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM