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 に答える