2014-10-29 15 views
1

我在拖不同的型號之一的職位(部門,公司...)和員工的一些數據(EmpName,EmpAge,EmpPosition ...)Yii2如何使用兩種不同的模式在一個GridView的

哪有我同時使用一個GridView控件內的車型才能擁有像一個表(EmpName,EmpPosition,公司,部門....)

我知道如何從一個模型創建的GridView

<?= GridView::widget([ 
     'dataProvider' => $dataProvider, 
     'columns' => [ 
      ['class' => 'yii\grid\SerialColumn'], 

      'EmpName', 
      'EmpPosition', ...........  ], 
]); ?> 

回答

1

如果您已經在您的員工模型中定義了一個關係以獲取對您的工作模型的引用,可以使用它來完成

<?= GridView::widget([ 
     'dataProvider' => $dataProvider, 
     'columns' => [ 
      ['class' => 'yii\grid\SerialColumn'], 
      'EmpName', 
      'EmpPosition', 
      [ 
       'name' => 'Company', 
       'value' => '$data->Job->Company', 
      ], 
      ...........  ], 
]); ?> 

員工模型

:: 
function getJob() { 
    /* 
    * Assumptions: 
    * - foreign key to job in employee table is named job_id 
    * - primary key in job table is named id 
    */ 
    return this->hasOne(Job::classname(), ['id' => 'job_id']); 
} 
:: 

Yii2 Documentation瞭解更多信息

+0

噢好吧我看到了,但沒有我沒有在Employee模型中定義關係,我該怎麼做呢? thx – Test404 2014-10-29 08:32:11

+1

@ Test404在答案中查看員工模型。 – Barry 2014-10-29 08:37:55

1

對我來說並不認同這一工作:

[ 

'name' => 'Company', 
'value' => '$data->Job->Company', 
], 

它工作正常

[ 

'label' => 'Company', 
'value' => function ($data){ return $data->Job->Company; }, 
], 
0

Yii2 GridView控件的DataColumn支持模型關係

[ 
    'name' => 'Company', 
    'value' => 'job.Company', 
], 

它在語法短,避免了異常,當$data->Job = null點符號。

相關問題