2012-11-07 2 views
2

Yii의 STAT 관계에 문제가 있습니다. 나는 내가 찾고있는 것이 네이티브 Yii 관계에서 가능한지 확신 할 수 없다. 내 문제를 설명하기 위해 최선을 다할 것입니다. 명확하지 않은 것이 있으면 구체적인 세부 사항을 문의하십시오.STAT 관련 모델의 STAT 관계, Yii 관련 관계

나는 세 개의 테이블과의 관계가 TableA의 HAS_MANY TableB의와 TableB의 HAS_MANY TableC 같다 따라서 세 가지 모델

| tablea   | 
| tableb   | 
| tablec   | 


mysql> select * from tablea; 
+----+--------+ 
| id | name | 
+----+--------+ 
| 1 | Item 1 | 
| 2 | Item 2 | 
+----+--------+ 
2 rows in set (0.00 sec) 

mysql> select * from tableb; 
+----+------+----------+ 
| id | Aid | name  | 
+----+------+----------+ 
| 1 | 1 | B Item 1 | 
| 2 | 2 | B Item 2 | 
| 3 | 1 | B Item 3 | 
+----+------+----------+ 
3 rows in set (0.00 sec) 

mysql> select * from tablec; 
+----+------+----------+-------+ 
| id | Bid | name  | value | 
+----+------+----------+-------+ 
| 1 | 1 | C Item 1 | 10 | 
| 2 | 2 | C Item 2 | 20 | 
| 3 | 1 | C Item 3 | 15 | 
| 4 | 2 | C Item 4 |  5 | 
| 5 | 3 | C Item 5 | 12 | 
+----+------+----------+-------+ 
5 rows in set (0.00 sec) 

있습니다.

나는 TableC에 값 필드를 가지고 있습니다. 나는 TableB로부터 가치 합계에 대한 STAT 관계를 얻을 수있다. 내가 원하는 것은 TableA의 모든 TableC 항목의 합계입니다. GridView에서 정렬 기능을 사용하면됩니다.

구현 방법에 대한 의견이 있으십니까?

감사합니다 당신은 너무처럼 TableA 모델의 관계에 세 번째 테이블에 합류 시도 할 수

답변

4

:

public function relations() 
{ 
    return array(
     ... 
     'TableCCount' => array(self::STAT, 'TableB', 'Aid', 'join'=>'INNER JOIN `tablec` `tc` ON `tc`.`Bid` = `t`.`id`'), 
     ... 
    ); 
} 

없음 테스트, 그래서 약간의 편집이 필요할 수 있습니다.

+1

감사합니다. 하지만 이것은 관계를 완전히 사용하지 않고 우리는 조인에 테이블 이름을 사용하고 있습니다. 이것은 이것을 달성하기위한 원주민의 Yii 방식입니까? STAT 관계에서 '통과'를 사용할 수없는 이유가 궁금합니다. –