2012-05-15 93 views
1

我在Agent模型中有一個GetStudents函數。在那裏我找到與代理有關的學生。YII中的關係問題

但我想向學生展示的更多的字段從另一個表 如

**Agent table** (agent has students) 
agent_id 

**student table** 
STUDENTID pkey 
agent_id 

**relation table** (this table creates relation between student and household) 
StudentID HOUSEHOLDID 

**HOUSEHOLD TABLE** 
HouseHOLDID Householdname 

我想,當我獲取所有學生的信息獲取householdname。

真的希望bazzare給我,我新手警予

我的代理模式的功能。

public static function getStudents($id) { 
     $relationships = Relationship::model()->findAll('type = :type AND source = :agent_id', array(':type' => 2, ':agent_id' => $id)); 
     //$relationships=sort($relationships); 
     // Generate relationship array 

     //print_r($relationships); 
     foreach ($relationships as $relationship) { 
      $in[] = $relationship->destination; 
     } 

     // Generate db condition 
     $criteria = new CDbCriteria; 
     if (! isset($in) || ! is_array($in) || sizeOf($in) == 0) { 
      $in[] = -999; 
     } 
     $criteria->addInCondition('StudentID', $in, 'OR'); 



     return new CActiveDataProvider('Student', array(
      'criteria' => $criteria, 
      'sort'=>array('defaultOrder'=>array(
    'StudentID'=>CSort::SORT_DESC, 
)), 
     )); 
    } 

我的代碼在通過傳遞ID進去

<?php $this->widget('zii.widgets.CDetailView', array(
    'data' => $model, 
    'attributes' => array(
array(
    'label' => 'Agent Details', 
    'type' => 'raw', 
    'value' => '', 
    'cssClass' => 'heading', 
), 
'agent_id', 
'user.email', 
'first_name', 
'last_name', 
'company', 
'phone', 
    ), 
)); ?> 

任何幫助將大大appreicated獲取數據。

感謝 抗體

回答

2

首先,您應與學生關係表關係在relations陣列relation model這樣的..

'student'=>array(self::BELONGS_TO, 'Student', 'StudentID'), //after belongs to student is model class name 

'household'=>array(self::BELONGS_TO, 'HOUSEHOLD', 'HOUSEHOLDID'),//after belongs to HOUSEHOLD is model class name 

然後你就可以獲取像這樣的活動記錄的所有記錄。 ..

$relationships = Relationship::model()->with('student','household')->findAll('type = :type AND source = :agent_id', array(':type' => 2, ':agent_id' => $id)); 
+0

嗨感謝您的快速回復..但關係表在哪裏使用?我有一個與 StudentID HOUSEHOLDID字段的關係表,它使學生和家庭之間發生關係。 再次感謝 ab – abnab

+0

關係是你的模型和('學生','家庭')與關係模型建立關係..在這裏你的關係使用.. –

+0

關係「學生」沒有定義在活動記錄類「關係」。 (''''''''>''),以及'(''''''''') - > findAll('type =:type AND source =:agent_id' 2,':agent_id'=> $ id)); \t \t ' ' 公共函數關係(){ \t \t返回陣列( \t \t \t '用戶'=>數組(自:: HAS_ONE, '用戶', 'USER_ID'), \t \t「學生'=> array(self :: BELONGS_TO,'Student','StudentID'), 'household'=> array(self :: BELONGS_TO,'Household','HouseholdID'), ); \t}' – abnab