2013-03-12 54 views
0

我有兩個表,1. Students2.SrkParents.如何在一個顯示兩種型號CGridView

關係,在學生模型,

'srkParents' => array(self::HAS_MANY, 'SrkParents', 'studentID'), 

關係在SrkParents模型,

'student' => array(self::BELONGS_TO, 'Students', 'studentID'), 

觀點,

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'students-grid', 
'dataProvider'=>$dataProvider, 
'filter'=>$model, 
'columns'=>array('studentID','status','del', 

array('name'=>'SrkParents.fathers_name', 
'value'=>'$data->Students->fathers_name', 
'type'=>'raw'), 
array('class'=>'CButtonColumn',),),)); 

我不知道我沒有錯..我得到的錯誤,如下圖所示,

Property "Students.Students" is not defined. 

回答

1

修改回答:剛從的has_many變化之間的關係HAS_ONE

'srkParents' => array(self::HAS_ONE, 'SrkParents', 'studentID'), 
+0

Thnx Saxena ..我試過那些,但即時通訊得到同樣的錯誤..我需要做模型標準的任何變化? – sher 2013-03-12 08:57:04

+0

@sher yes ...如果你沒有添加標準,那麼在你的模型中添加這個:''criteria-> compare('srkParents',$ this-> srkParents,true);' – 2013-03-12 09:13:16

+0

我有默認條件,應該我仍然需要添加或笏? – sher 2013-03-12 09:16:28

0

你的關係srkParentsHAS_MANY關係。因此$data->srkParents陣列SrkParents而不是一個對象。這是有道理的,因爲你的學生有幾個父母。

我不知道有足夠的瞭解你的模型屬性,所以我只能猜測:要解決這將是一個get呃添加到您的Students模型,它遍歷$this->srkParents找到父親對象並返回名稱的一種方式從那裏:

public function getFatherName() 
{ 
    foreach($this->srkParents as $parent) 
     if($parent->sex=='m' /* just guessing */) 
      return $parent->name; 
} 

然後,您可以在您的網格視圖中使用$data->fatherName

+0

我有SrkParents中的外鍵爲studentID,這意味着關係是HAS_ONE,對嗎?我已將其更改爲HAS_ONE並正在工作。 – sher 2013-03-13 01:51:23

0

你的關係名稱是學生,這是情況敏感的。

嘗試將$data->Students->fathers_name更改爲$data->student->fathers_name

屬性Students.Students未定義。

我在做什麼錯?

  • 您想從哪個沒有定義模型Students得到場Students
+0

非常感謝您的幫助。我在關係中犯了錯誤。現在解決了 – sher 2013-03-13 01:49:18

相關問題