Tôi tò mò tại sao mối quan hệ Eloquent cho hasMany
có chữ ký khác với belongsToMany
. Cụ thể là tên bảng tham gia tùy chỉnh-- đối với hệ thống trong đó Comment
nhất định thuộc về nhiều Role
s và Role
nhất định sẽ có nhiều Comment
s, tôi muốn lưu trữ mối quan hệ trong một bảng gọi là my_custom_join_table
và có các khóa được thiết lập là comment_key
và role_key
.hasMany vs dependsToMany trong laravel 5.x
return $this->belongsToMany('App\Role', 'my_custom_join_table', 'comment_key', 'role_key'); // works
Nhưng nghịch đảo, tôi không thể xác định rằng bảng tùy chỉnh (ít nhất là các tài liệu không đề cập đến nó):
return $this->hasMany('App\Comment', 'comment_key', 'role_key');
Nếu tôi có một đối tượng Role
rằng hasMany
Comments
, nhưng Tôi sử dụng một tên bảng phi tiêu chuẩn để lưu trữ mối quan hệ đó, tại sao tôi có thể sử dụng bảng phi tiêu chuẩn này theo cách này chứ không phải một cách khác?
Nghịch đảo của một bi-directional nhiều-nhiều mối quan hệ là nhiều-nhiều, không phải là một-nhiều. Doctrine có [bản trình bày đẹp mắt về tất cả các lệnh liên quan] (http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#many-to-many-bidirectional) và triển khai của họ. – bishop
Các tài liệu chính thức cũng có một rất tốt đẹp viết về quan hệ Eloquent https://laravel.com/docs/5.2/eloquent-relationships – user3158900