4

考虑 CakePHP 2.2.3 中的以下 HABTM 关系:

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 文档声明它应该可以工作。知道为什么它不适合我吗?我错过了什么?

4

1 回答 1

0

使用“with”键定义连接表的模型名称。在你的情况下:

public $hasAndBelongsToMany = array(
    'VeryUniqueAlias' => array(
        'className' => 'Role',
        'joinTable' => 'roles_users',
        'with' => 'RolesUser',    // first model pluralized
        'foreignKey' => 'user_id',
        'associationForeignKey' => 'role_id',
    )

);
于 2012-11-24T22:44:03.353 回答