2014-09-18 3 views
0

사용자 모델과 커미션 모델을 조인하는 조인 모델 인 UserCommission이 있습니다. 사용자 모델이 조직 모델에 속합니다. 그리고 조직 모델에는 많은 사용자 모델이 있습니다.CakePHP 조인 테이블

array(
    (int) 0 => array(
     'UserCommission' => array(
      'id' => '1247', 
      'user_id' => '872', 
      'commission_id' => '13' 
     ), 
     'User' => array(
      'id' => '872', 
      'organisation_id' => '6', 
     ), 
     'Commission' => array(
      'id' => '13', 
      'nom' => 'SALARIES CE' 
     ), 
     'Organisation' => array(
      'id' => '6', 
      'nom' => 'The Organisation #6' 
     ) 
    ), 
    ... 
) 

모델 협회 : 반환 된 배열과 같이되도록

array(
    (int) 0 => array(
     'UserCommission' => array(
      'id' => '1247', 
      'user_id' => '872', 
      'commission_id' => '13' 
     ), 
     'User' => array(
      'id' => '872', 
      'organisation_id' => '6', // I need data related to Organisation model 
     ), 
     'Commission' => array(
      'id' => '13', 
      'nom' => 'SALARIES CE' 
     ) 
    ), 
    ... 
) 

가 어떻게 조직 모델에서 데이터를 얻을 수 있습니다 내 모델 UserCommission에서

$this->find('all')와 나는이 배열을 얻을 :

사용자 belongsTo 조직
조직 hasMany 사용자
사용자 (UserCommission와) hasAndBelongsToMany의위원회 (UserCommission와)
위원회 hasAndBelongsToMany의 사용자
UserCommission belongsTo를 사용
UserCommission belongsTo를위원회

모델 테이블 :
사용자 (ID; organisation_id; 사용자 이름; ...)
위원회 (ID; commission_name, ...)
기구 (ID; ORGANISATION_NAME는, ...)
UserCommission (ID; USER_ID, commission_id, ...)

+0

시도해보십시오. $ this-> User-> Organisation-> find ('all'); –

+0

그것은 도움이되지 않습니다. UserCommission, User 및 Organization에 가입하려면 * JOINS * 옵션을 사용해야한다고 생각하지만 어떻게해야할지 모르겠다. – Patudek

+0

모델 관계가 제대로 정의되어있는 한 일반적으로 JOIN을 사용할 필요가 없습니다. 귀하의 질문에 ** 사용자 ** 모델의 ** $ hasAndBelongsToMany **, ** $ hasMany ** 및 ** $ belongsTo ** 구성을 공유하십시오. – AgRizzo

답변

0

관계가 제대로 경우 당신이 사용할 수있는 구성 :이 해결 방법에

$User->recursive=2; 
$User->find('all') 

문제는 당신이 조직 정보가없는 동일한 수준에서 사용자의 배열 내에 중첩하고 현명한 정말 나쁜 자원입니다 얻을 것입니다. 데이터베이스에 얼마나 많은 조직이 있는지에 따라 다르지만 때로는 거대한 쿼리를 작성하는 대신 필요한 정보를 검색하는 두 번째 쿼리를 작성하는 것이 좋습니다.

+0

네,이 방법이 효과적입니다.하지만 말했듯이 엄청난 양의 데이터가 나타납니다. 너무 많은. 이를 피하기 위해 두 번째 쿼리를 작성하려고합니다. 도와 줘서 고마워. – Patudek