2015-05-13 51 views
2

我目前是Yii的新手,並且在我的應用程序中遇到了一些問題。在CDetailView中打印數組的所有值Yii

我有2 AR(員工和兒童)的關係是員工has_many孩子。現在,當我們進入員工的視圖(在& id = blablabla不在索引中)時,我想列出員工擁有的所有子項。

我在EmployeeController類生成的函數從我的數據庫中檢索孩子

$anak = Anak::Model()->findAll(array(
          'condition'=>'id_karyawan=:id_karyawan', 
          'params'=>array(':id_karyawan'=>$id_karyawan))); 
    //return $anak; 
    foreach ($anak as $data){ 
     return $data->namaanak; 
    } 

的問題是,它只是顯示了孩子的1個數據(第一位的,是精確的),即使在我的分貝中,員工有3個孩子。當我嘗試統計查詢結果的,它顯示3

我的員工/看法是這樣的

$this->widget('zii.widgets.CDetailView', array(
'data'=>$model, 
'attributes'=>array(
    'id_karyawan', 
    'nama', 
    array(
     'name'=>'idjabatan', 
     'value'=>$model->findByPk($model->id_karyawan)->jabatan->namajabatan, 
    ), 
    array(
     'name'=>'gaji', 
     'value'=>Yii::app()->numberFormatter->formatCurrency($model->findByPk($model->id_karyawan)->jabatan->gaji, 'Rp'), 
    ), 
    'alamat', 
    array(
     'name'=>'ttl', 
     'value'=>$model->tempatlahir.', '.Yii::app()->dateFormatter->format("dd MMMM yyyy", $model->tgllahir), 
    ), 
    array(
     'name'=>'Istri', 
     'value'=>Istri::model()->getNama($model->id_karyawan), 
     'type'=>'raw' 
     ), 
    array(
     'name'=>'Anak', 
     'value'=>$this->getAnak($model->id_karyawan), 
     'type'=>'raw' 
    ) 
), 

我試圖谷歌,但我無法找到任何工作答案:(

PS:karyawan =員工,阿納=兒童

回答

0

,因爲你正在返回它的功能時,您的foreach循環內馬上你只得到了第一個相關的價值首先收集所有相關模型,然後返回和使用該數據。

您也可以跳過控制器內的額外功能。如果你使用Gii,它應該已經爲你設置了合適的Employee HAS_MANY子關係,所以你可以用它來爲你正在查看的每個Employee模型提取所有相關的模型。請參閱下面的一個簡單的例子

員工型號:

public function relations() 
{ 
    return array(
     'children' => array(self::HAS_MANY, 'Child', 'employee_id'), 
    ); 
} 

查看文件,傳遞一個員工模型來CDetailView:

$this->widget('zii.widgets.CDetailView', array(
    'data' => $model, 
    'attributes'=>array(
     array(
      'name' => 'Children', 
      'value' => function ($data) { 
       // Get all related children using the relation defined in the Employee model and use CHtml::listData to store data inside the $children variable as an array using `id` as key and `child_name` as value 
       $children = CHtml::listData($data->children, 'id', 'child_name'); 
       // Return names as a comma separated list 
       return implode(', ', $children); 
      }, 
      'type'=>'raw' 
     ) 
    ) 
); 

我的表/列名可能不匹配什麼你有,但希望這有助於。