質問

2つのモデル間で多くの関係を作ろうとしています:users_roleとusers_right

class Model_Users_Role extends ORM{
    protected $_has_many = array(
        'rights' => array(
            'model'   => 'users_right',
            'through' => 'users_roles_rights',
        ),
    ); 
}

class Model_Users_Right extends ORM{    
    protected $_has_many = array(
        'roles' => array(
            'model'   => 'users_role',
            'through' => 'users_roles_rights',
        ),
    );
}

私はこれをやろうとしています:

$role = ORM::factory('users_role', 1);
$right = ORM::factory('users_right', 1);
$right->add('roles', $role);

エラー:

Database_Exception [ 1054 ]: Unknown column 'role_id' in 'field list' [ INSERT INTO `users_roles_rights` (`users_right_id`, `role_id`) VALUES ('1', '1') ]

私は反対側でそれを作ろうとしました:

$role = ORM::factory('users_role', 1);
$right = ORM::factory('users_right', 1);        
$role->add('rights', $right);

新しいエラー:

Database_Exception [ 1054 ]: Unknown column 'right_id' in 'field list' [ INSERT INTO `users_roles_rights` (`users_role_id`, `right_id`) VALUES ('1', '1') ]

ORMが使用することを期待していました users_role_idusers_right_id ピボットテーブルのフィールド名ですが、ファーキーの間違った名前を使用していますか?私はどこで間違いを犯しましたか?

役に立ちましたか?

解決

場所をチェックしてください デフォルト値が設定されています。これを試して:

class Model_Users_Role extends ORM{
    protected $_has_many = array(
        'rights' => array(
            'model'   => 'users_right',
            'far_key' => 'users_right_id',
            'through' => 'users_roles_rights',
        ),
    ); 
}

class Model_Users_Right extends ORM{    
    protected $_has_many = array(
        'roles' => array(
            'model'   => 'users_role',
            'far_key' => 'users_role_id',
            'through' => 'users_roles_rights',
        ),
    );
}

コハナは、関係がまだ存在していないことを確認していません。

2つの外部キー列に複合一意のキーを使用して、データベーステーブルにこれを実施するか、追加する前に関係がまだ存在しないことをコードに確認させます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top