我有一個GridView
,它顯示員工對他/她的工資單的摘要。下面是更多的理解截圖:Yii2在一個GridView中使用兩種模型
那些突出的列來自不同的模型,它是User
模型,其餘來自Payslip
模型來。
如何在一個GridView
中合併2個模型?因爲在GridView
中,您更有可能擁有單個模型來顯示數據。但是2款車型呢?
下面是我Payslip
模式代碼,請注意getUser()
與gii
因爲user_id
是一個外鍵在我payslip
表中生成:
public function getUser()
{
return $this->hasOne(User::className(), ['user_id' => 'user_id']);
}
public function getFirstName()
{
return $this->user ? $this->user->fname : 'First Name';
}
public function getLastName()
{
return $this->user ? $this->user->lname : 'Last Name';
}
的Payslip
控制器:
public function actionIndex()
{
$searchModel = new PayslipSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
然後Payslip
觀點:
<?php
echo GridView::widget([
'dataProvider' => $dataProvider,
//'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'payslip_id',
//'store_id',
'firstName',
'lastName',
'total_earnings',
'total_deduction',
'net_pay',
['class' => 'yii\grid\ActionColumn'],
],
]);
?>
順便說一句,在這個例子中,我剛剛創建的工資單#1手動給你演示。
附加信息: 登錄的用戶是BizAdmin用戶,以及所有BizAdmin員工的用戶應在工資單表(該表以上),即使這些人員的用戶還沒有任何工資單創建顯示爲他們。所以在默認情況下,該表將已經與員工的用戶下BizAdmin登錄的用戶佔用,這些工作人員的用戶誰仍然沒有建立任何將顯示工資單「創建工資單」
下面是KashFlow一個例子: