2012-11-07 164 views
2

我在Yii中遇到STAT關係的問題。我不確定我所尋找的東西是否有可能與本土的Yii關係。我會盡我所能來形容我的問題,如果不清楚,請詢問任何具體細節。STAT與相關模型的STAT關係的關係Yii

我有三個表,因此三款車型

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

的關係就像TableA的HAS_MANY表B表B和HAS_MANY表C。

我在TableC中有一個值字段。我能夠從TableB的值中獲得STAT關係。我想要的是TableA中所有TableC項目的總和。我需要在具有排序功能的GridView中使用=它們。

任何關於如何實現這個想法?

感謝

回答

4

你可以嘗試在你的TableA模型加入第三個表上的關係,像這樣:

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

沒有測試過,所以可能需要稍加修改。

+1

謝謝,這是工作。但是這並沒有充分利用關係,我們在連接中使用表名。這是本土Yii如何實現這一目標?我想知道爲什麼我們不能在STAT關係中使用'through'。 –