Laravel多层次关系

时间:2018-10-31 22:20:19

标签: database laravel database-design relational-database

我想这样进行JSON响应:

{
  "title": "Category title",
  "description": "Category description",
  "articles": [
    {
      "title": "Article title",
      "comments": [
        {
          "user_name": "User Name",
          "text": "Coment text"
        },
        {
          "user_name": "User Name",
          "text": "Coment text"
        }  
      ]
    }
  ]
}

应用程序具有类别表

categories
   id
   title
   description

还有category_articles表

category_articles
   id
   category_id
   article_id

类别模型具有这种关系

public function articles()
{
   return $this->hasMany('App\CategoryArticles', 'category_id');
}

如您所见,类别与文章之间没有直接关系 因为文章是一种独立的表,将在不同的部分使用 申请

这是文章表

articles
  id
  title
  body

文章之间有很多评论关系

comments
   id
   user_id

评论也与用户有关系

因此,我需要像开始时一样返回响应。 我在控制器中就像这里一样堆叠。

 public function show(Category $category) 
 {

 }

我应该如何实现我的代码以获得这样的响应?我应该为此使用资源吗?

2 个答案:

答案 0 :(得分:1)

v = df1.merge(df2, left_on='Target', right_on='Source', how='right') dct = dict( Source=v['Source'], out_degree=v['in_degree'].add(v['out_degree'], fill_value=0)) pd.DataFrame(dct).sort_values('Source') Source out_degree 3 1 4.0 0 2 5.0 4 3 5.0 1 4 29.0 2 5 58.0 应该是articles关系:

BelongsToMany

然后使用紧急加载:

public function articles()
{
   return $this->belongsToMany('App\Article', 'category_articles');
}

答案 1 :(得分:0)

在以下情况下使用hasMany关系:
一个用户有很多汽车(但是汽车仅对一个用户唯一)
拥有2个模型和2个表(其中1个具有所有数据,即汽车,以及对用户的引用,即user_id)

在您的情况下,这将是一个AboutToMany关系
一个用户有很多办公室(但是有更多与该办公室相关的用户/风扇/灯等)
有3个表(用户,办公室,数据透视表user_office(带有user_id和office_id)