2012-01-17 3 views
1
나는 두 모델 사이의 다 대다 관계를 만들려고 노력

: Users_Role 및 Users_RightKohana 3.2 ORM 대다 - 잘못된 필드 이름

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); 

오류 : 나는 t을 tryed

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); 

새로운 오류 : O는 다른 측면에서 만들 내가 ORM은 피벗 테이블에서 users_role_idusers_right_id 필드 이름을 사용할 것으로 예상

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

을하지만, 지금까지 키의 잘못된 이름을 사용? 내가 실수 한 곳?

+0

배열에 'far_key'를 추가했는데 데이터가 성공적으로 추가되었습니다. 하지만 두 번째로 같은 관계를 추가하려고하면 kohana 광고가 피벗 테이블에 하나 더 같은 행을 추가합니다. 왜? – user1151990

답변

2

default values are set을 확인하십시오. 이 시도 :

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', 
     ), 
    ); 
} 

Kohana는 관계가 존재하지 않음을 확인하지 않습니다.

두 개의 외래 키 열에 복합 고유 키를 사용하여 데이터베이스 테이블에이를 적용하거나 추가하기 전에 관계가 이미 존재하지 않는지 확인하십시오.

관련 문제