-1

我有一个名为权限的模型。

权限有很多角色 权限有很多用户 权限有很多被拒绝的用户

以下来自权限模型:

protected $_has_many = array(
    'user' => array('through' => 'user_permission'),
    'permissiondeny' => array('model' => 'user', 'through' => 'user_permissiondeny','foreign_key' => 'permissiondeny_id'),
    'role' => array('through' => 'role_permission'),
);

用户和角色关系按预期工作。我可以选择拒绝权限,但是当我尝试添加新权限时,我收到以下 php 错误:

PHP 致命错误:未捕获的 Database_Exception [1110]:列 'permissiondeny_id' 指定了两次 [ INSERT INTO user_permissiondeny( permissiondeny_id, permissiondeny_id) VALUES ('1', 1) ] ~ MODPATH/database/classes/kohana/database/mysql.php [194]

关于我缺少什么的任何建议?

4

1 回答 1

1

由于您没有遵循 ORM 中的命名约定,因此您需要更改您的has_many声明:

protected $_has_many = array(
  'user' => array('through' => 'user_permission'),
  'permissiondeny' => array('model' => 'user', 'through' => 'user_permissiondeny','foreign_key' => 'permissiondeny_id', 'far_key' => 'permission_id'),
  'role' => array('through' => 'role_permission'),
);

请注意该far_key部分,您需要指定要查找的列的名称。可能是user_id, role_id, permission_id, 等等

于 2012-12-27T20:58:52.743 回答