簡體   English   中英

laravel 獲取帖子列表,帶有標簽和評論

[英]laravel get a list of posts, with their tags, and comments

答案如下。

我正在嘗試獲取一個包含 10 個帖子的列表,並添加每個帖子的標簽和評論(這將因帖子而異)我在下面有一個我想要實現的示例。

基本上,我將以此作為開始。 https://laravel.com/docs/5.8/eloquent-relationships#many-to-many

然而,它不太工作。它逐字設置,我按照描述設置了數據透視表。 要么我可以獲得所有帖子,但通過 1 個標簽,或 1 個帶有所有標簽的帖子。 IE

"post_title": "Post 1 ",
    "tags": [
            {
                "tag_name": "Tag 1"
            },{
                "tag_name": "Tag 2"
            },... 

我也嘗試過使用 join 方法,但最終遇到了這種情況。

 [{ 
    "post_title": "Post 1 ", <--- post 1
    "tag_name": "Tag 1"
  },
  {
    "post_title": "Post 1 ", <--- Also post 1
    "tag_name": "Tag 2"
  },
  {
    "post_title": "Post 3 ",
    "tag_name": "Tag 2"
  },
  {
    "post_title": "Post 4 ",
    "tag_name": "Tag 1"
  }]

如您所見,前 2 個帖子名稱重復。 我應該在帖子 1 中添加兩個標簽。

我似乎能夠實現這一點的方法是加入所有內容,然后修改和分組元素,甚至更糟的是獲取最新的 10 個帖子,然后將帖子 ID 提取到一個數組中。 然后使用這些帖子 ID,獲取帖子 ID 匹配的所有類別,然后重復評論。 然后把它拉在一起。 這看起來超級笨重。

這很奇怪,因為這似乎應該在 google 中隨處可見。 如果是,對不起。

Laravel 必須有一個簡單的解決方案才能讓我得到下面的結構。 問題是,使用 Eloquent 還是使用 Database 部分的 join 查詢來解決這個問題更好?

[{ 
    "post_title": "Post 1 ", 
    "cat": [
        {
          'catname': "Tag 1"
        },
        {
          'catname': "Tag 2"
        },
    ],
    "comment": [
        {
            'comment': "Here be a comment"
        },
        {
            'comment': "Here is one two"
        },
    ],
},
{ 
    "post_title": "Post 2 ", 
    "cat": [
        {
        'catname': "Tag 1"
        }
    ],
    "comment": [],
}
...
]

回答要解決此問題,請使用Eager loading https://laravel.com/docs/5.8/eloquent-relationships#eager-loading

謝謝蒂姆·劉易斯和亞歷克·喬伊!

要解決此問題,請使用Eager loading

(作為社區 wiki-answer 發布,因為此問題已由提問者回答)

暫無
暫無

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

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