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',
    )

);
Другие вопросы по тегам