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

Posted

技术标签:

【中文标题】可以将数据透视表与 laravel 5.5 中的另一个数据透视表相关联吗?【英文标题】:It is possible to relate a pivot table to another pivot table in laravel 5.5? 【发布时间】:2018-09-22 18:34:11 【问题描述】:

计划

身份证 姓名

帖子

身份证 标题

用户

身份证 姓名

分类

身份证 姓名

plan_post //BelongsToMany

plan_id post_id

plan_user //BelongsToMany

身份证 plan_id user_id

我需要将类别与 pan_user 记录相关联...

plan_user_category // 什么 ??? plan_user_id category_id

【问题讨论】:

嗨 - 为了便于阅读,您能否在正文中解释您的问题,而不仅仅是在您的模型中的评论中?谢谢! 【参考方案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();

【讨论】:

我明白了,问题是我同步表plan_user的时候需要设置一个category引用,大家有什么建议吗?

以上是关于可以将数据透视表与 laravel 5.5 中的另一个数据透视表相关联吗?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Laravel 中获取数据透视表与另一个表的关系?

Laravel多态多对多关系数据透视表与另一个模型的关系

在 Eloquent 中将数据透视表与多个表连接起来

交叉表与透视变

Laravel 5.5如何获得与模型相关的所有模型?

laravel4 更新数据透视表中的附加列