2014-02-10 1 views
0

저는 PHP-Activerecord를 사용하여 상당히 새롭고 이것이 가능한지 확실하지 않습니다.테이블의 PK에 의한 컨디셔닝은 PHP-Activerecord에 속해 있습니다.

3 모델; 푸, 바 및 사용자.

Foo 1-0 Bar (Foo는 항상 Bar에 할당되고 Bar는 Foo가 1 또는 0 일 수 있음).

막대 N-1 사용자 (막대는 항상 사용자에게 할당되고 사용자는 많은 막대를 가질 수 있음).

class Foo extends Model 
{ 
    static $belongs_to = array(
     array('bar', 
      'class_name' => 'Bar') 
    ); 
} 

class Bar extends Model 
{ 
    static $belongs_to = array(
     array('user', 
      'class_name' => 'User') 
    ); 
} 

class User extends Model 
{ 
    static $has_many = array(
     array('bar', 
      'class_name' => 'Bar') 
    ); 
} 

작품 내가 할 경우 :

$bars = Bar::find('all', array(
    'user_id' => $userId 
); 

를하지만 푸의 아닌 바합니다. 그래서 시도했습니다 ...

$foos = Foo::find('all', array(
    'bar.user_id' => $userId 
); 

하지만 작동하지 않습니다. user_id 열을 찾을 수 없습니다.

이 조건을 어떻게 적용 할 수 있습니까?

답변

0

'through' 관계를 찾고 있습니다.

이 바 통해 푸의 사용자의를 얻기 위해 작동합니다 :

class User extends Model 
{ 
    static $has_many = array(
     array(
      'bar', 
      'class_name' => 'Bar' 
     ), 
     array(
      'foo', 
      'class_name' => 'Foo', 
      'through' => 'Bar' 
     ) 
    ); 
}