两个多对多相关表之间的Laravel雄辩关系

Posted

技术标签:

【中文标题】两个多对多相关表之间的Laravel雄辩关系【英文标题】:Laravel eloquent relationship between two many to many related tables 【发布时间】:2015-03-07 11:34:45 【问题描述】:

我有很多相关的两个表,“roles”和“users”,数据透视表为“user_roles”。

在角色模型中

$this->belongsToMany('users', 'user_roles');

在用户模型中

$this->belongsToMany('roles', 'user_roles');

这是一个有效的关系吗?

【问题讨论】:

【参考方案1】:

您想要一个数据透视表和多对多关系,就像您说的那样使用数据透视表。

Laravel documentation - Eloquent 中解释了您要执行的操作

【讨论】:

【参考方案2】:

没有。第一个参数应该是相关模型的类名:

$this->belongsToMany('User', 'user_roles');

$this->belongsToMany('Role', 'user_roles');

否则,如果你的外键遵循约定,你应该没问题...

See the documentation for more info

【讨论】:

除非您在数据透视表上使用自定义名称,否则您实际上只需要在创建关系时声明您的模型名称。像 $this->belongsToMany('Role'); 好吧user_roles 自定义名称。默认为role_user

以上是关于两个多对多相关表之间的Laravel雄辩关系的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 雄辩的多对多关系问题

Laravel 多对多中的雄辩关系通过

Laravel 雄辩的多对多模型

选择多对多的关系

Laravel 定义同一张表的多对多关系

在多对多关系 laravel4 的情况下更新数据透视表