可以将透视表与laravel 5.5中的另一个透视表相关联?

时间:2018-04-12 14:37:23

标签: laravel pivot relationship

  • 计划

    • ID
    • 名称
  • 帖子

    • ID
    • 标题
  • 用户

    • ID
    • 名称
  • 类别

    • ID
    • 名称
  • plan_post // BelongsToMany

    • plan_id的数据类型
    • POST_ID
  • plan_user // BelongsToMany

    • ID
    • plan_id的数据类型
    • USER_ID
  • 我需要将一个类别与pan_user记录相关联......

  • plan_user_category //什么???
    • plan_user_id
    • CATEGORY_ID

1 个答案:

答案 0 :(得分:1)

没有这种关系。如果您有一个数据透视表,它会绑定两个非透视表。

什么是数据透视表?这是一个没有增量的表。并且它与表格的增量绑定,它是一个支点。如果表格有增量,则它不会自动转动。

plan_user_category // what ???

 plan_user_id // BelongsTo or BelongsToMany -> plan_user
 category_id // BelongsTo or BelongsToMany -> categories

如果我理解正确,您希望有一个计划 - 用户 - 类别关系。

如果是,请进行以下表格:

  • 计划(id,...)
  • users_plans(user_id,plan_id)
  • 用户(id,...)
  • users_categories(user_id,category_id)
  • 类别(id,...)

从计划到达类别,有必要通过模型建立关系

class Plans
public function users() 
{
  return $this->belongsToMany('App\User', 'users_plans', 'user_id', 'plan_id');
}

class User
public function categories() 
{
  return $this->belongsToMany('App\Category', 'users_catogories', 'category_id', 'user_id');
}

foreach($plans->users() as $user) {
  $categories[] = $user->categories();
}