hasMany vs belongsToMany in laravel 5.x

Viewed 73274

I'm curious why the Eloquent relationship for hasMany has a different signature than for belongsToMany. Specifically the custom join table name-- for a system where a given Comment belongs to many Roles, and a given Role would have many Comments, I want to store the relationship in a table called my_custom_join_table and have the keys set up as comment_key and role_key.

return $this->belongsToMany('App\Role', 'my_custom_join_table', 'comment_key', 'role_key'); // works

But on the inverse, I can't define that custom table (at least the docs don't mention it):

return $this->hasMany('App\Comment', 'comment_key', 'role_key');

If I have a Role object that hasMany Comments, but I use a non-standard table name to store that relationship, why can I use this non-standard table going one way but not the other?

2 Answers
Related