相对于前面所讲的一对一和一对多(反向多对一)关系,多对多涉及到一个新的方法:belongsToMany,其含义为【属于多个】。多对多关系的表述中,将不再使用hasMany来表达。
举个例子:一个用户可以有多个角色,一个角色也可以有多个用户。此时我们在两个model中都使用belongsToMany来建立关联关系,即:一个用户被多个角色所拥有,一个角色也被多个用户所拥有。
多对多关系中的中间表就是一个 支点 ,通过此支点建立两个表之间的多对多关系。
查询多对多关系中的一个model实例时,会发现其带有一个pivot字段。默认pivot包含两个字段,即:两个外键字段。如果实际中间表除了两个外键之外还包含其他字段,并且你想在model的查询结果实例中包含此字段,则需要在belongsToMany之后使用withPivot方法表明你想要包含的支点的字段,比如:
当然有些时候你不想使用pivot这样抽象的字段名来访问支点数据,比如使用subscription这样具体的词来描述一个多对多的订阅关系,那么可以使用as方法来给支字段改名: