CakePHP псевдоним ломает модель HABTM
Рассмотрим следующее отношение HABTM в CakePHP 2.2.3:
class User extends AppModel
{
public $hasAndBelongsToMany = array(
'Role' => array(
'className' => 'Role',
'joinTable' => 'roles_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'role_id',
)
);
}
Это прекрасно работает, но при использовании псевдонима, как VeryUniqueAlias
вместо Role
и соответственно изменяя UsersController, отношение m:n не сохраняется в базе данных (данные передаются в save()
в контроллере эквивалентны).
Это не работает:
class User extends AppModel
{
public $hasAndBelongsToMany = array(
'VeryUniqueAlias' => array(
'className' => 'Role',
'joinTable' => 'roles_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'role_id',
)
);
}
Это неудобно, так как документы CakePHP утверждают, что он должен работать. Есть идеи, почему это не работает для меня? Я что-то пропустил?
1 ответ
Используйте клавишу "с", чтобы определить имя модели для таблицы соединений. В твоем случае:
public $hasAndBelongsToMany = array(
'VeryUniqueAlias' => array(
'className' => 'Role',
'joinTable' => 'roles_users',
'with' => 'RolesUser', // first model pluralized
'foreignKey' => 'user_id',
'associationForeignKey' => 'role_id',
)
);