我很好奇为什么hasMany
的Eloquent关系与belongsToMany
有不同的签名。特别是自定义连接表名称 - 对于给定的Comment
属于多个Role
s且给定的Role
将具有多个Comment
的系统,我想将关系存储在名为my_custom_join_table
的表中,并将键设置为comment_key
和role_key
。hasMany vs belongsToMany在laravel 5.x
return $this->belongsToMany('App\Role', 'my_custom_join_table', 'comment_key', 'role_key'); // works
但在倒数,我不能定义自定义表(至少在文档不提到它):如果我有一个Role
对象
return $this->hasMany('App\Comment', 'comment_key', 'role_key');
是hasMany
Comments
,但我使用非标准表名来存储这种关系,为什么我可以使用这种非标准表进行一种方式而不是另一种?
双向的逆多到多的关系是许多对多,而不是一个一对多。学说有一个[所有关系秩序的很好的介绍](http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#many-to-many-bidirectional )及其实现。 – bishop
官方文档也有一个很好的关于雄辩关系的写法https://laravel.com/docs/5.2/eloquent-relationships – user3158900