Позвольте мне показать здесь сценарий из Laravel do c: соответствующие таблицы базы данных: users
, roles
и role_users
. Имена таблиц не требуют пояснений.
User
модель:
class User extends Model
{
/**
* The roles that belong to the user.
*/
public function roles()
{
return $this->belongsToMany('App\Role');
}
}
В do c говорится:
Как упоминалось ранее, определив имя таблицы объединяющей таблицы отношений, Eloquent объединит два связанных имени модели в алфавитном порядке. Тем не менее, вы можете изменить это соглашение. Вы можете сделать это, передав второй аргумент в метод ownToMany:
return $this->belongsToMany('App\Role', 'role_user');
Затем он определяет обратную зависимость:
Role
модель:
class Role extends Model
{
/**
* The users that belong to the role.
*/
public function users()
{
return $this->belongsToMany('App\User');
}
}
Затем он говорит:
Поскольку мы повторно используем метод ownToMany, все обычные параметры настройки таблицы и ключа доступны при определении обратного отношения «многие ко многим».
Что я понимаю до сих пор:
Таблица pivot
была определена в User
модели, и в документах говорится, что
все обычные параметры таблицы и настройки ключа доступны в модели Role
с обратным отношением многие-ко-многим.
Так что, кажется, есть также возможность определить сводную таблицу в Role
модель также.
Eloquent объединит два связанных имени модели в алфавитном порядке, чтобы определить имя сводной таблицы по умолчанию.
В какой модели следует определить сводную таблицу, если имя сводной таблицы не соответствует соглашение по умолчанию?