2012-12-27 36 views
-1

我有一個名爲permission的模型。Kohana「有很多」問題

權限有很多角色 許可,擁有衆多用戶 權限已拒絕很多用戶

下面是從權限模型:

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_permissiondenypermissiondeny_idpermissiondeny_id)VALUES('1',1)]〜MODPATH/database/classes/kohana/database/mysql.php [194]

任何關於我失蹤的建議?

+0

你用來添加一個新的代碼是什麼?該ORM模型的名稱是什麼? – pocesar

回答

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_idrole_id,permission_id

+0

謝謝,像冠軍一樣工作!我知道這會是一件簡單的事情,因爲我失蹤了。 –