php - Yii2 Use two Models in one GridView -
i have gridview displays employee's summary of his/her payslip. here's screenshot more understanding:

those highlighted columns come different model user model while rest come payslip model.
how merge 2 models in 1 gridview? because in gridview, more have single model display data. how 2 models?
here's code in payslip model, note getuser() generated gii since user_id foreign key in payslip table:
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'; } the payslip controller:
public function actionindex() { $searchmodel = new payslipsearch(); $dataprovider = $searchmodel->search(yii::$app->request->queryparams); return $this->render('index', [ 'searchmodel' => $searchmodel, 'dataprovider' => $dataprovider, ]); } and payslip view:
<?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'], ], ]); ?> btw, in example, created payslip #1 manually give demo.
additional info: logged in user bizadmin user, , of bizadmin's staff users should displayed in payslip table (that table above) if these staff users still don't have payslip created them. default, table occupied staff users under logged in bizadmin user, , staff users still have no payslips created indicated "create payslip"
here's example in kashflow: 
update view to:
<?php echo gridview::widget([ 'dataprovider' => $dataprovider, //'filtermodel' => $searchmodel, 'columns' => [ ['class' => 'yii\grid\serialcolumn'], 'payslip_id', //'store_id', ['value' => function ($data) {return $data->getfirstname();}, 'label' => 'first name'], ['value' => function ($data) {return $data->getlastname();}, 'label' => 'lastname'], 'total_earnings', 'total_deduction', 'net_pay', ['class' => 'yii\grid\actioncolumn'], ], ]); ?> and in $searchmodel->search add relation, that:
$query = payslip::find()->with(['user']); read data column - http://www.yiiframework.com/doc-2.0/guide-output-data-widgets.html#data-column
Comments
Post a Comment