yii2 用来自另一个 table 的记录填充网格
yii2 populate grid with record from another table
我正在尝试在网格中显示来自另一个模型的字段,但无法正常工作。
我有 2 个表:Customers 和 Attendance,我只需要为每个客户带来今天的出勤率。
从出勤率来看,我正在尝试获得该字段attendance.doctor
在网格中,我正在尝试获取一个函数,但无法正常工作。
$gridColumns = [
[
'label' => 'Doctor',
'value' => function ($model, $index, $dataColumn) {
return $model->attendance->doctor;
},
],
...
];
"value" 的闭包是:
function($model, $key, $index, $widget) {
return $model->attendance->doctor->name;
}
或者您可以这样做:
"value" => "attendance.doctor.name"
文档:http://www.yiiframework.com/doc-2.0/guide-output-data-widgets.html#column-classes
我花了几个小时,但我发现这个方法可能不是最好的,但很有效。
在视图中,我使用的是 kartik 网格,但与默认网格的工作方式相同。
我想从出勤表中获得 3 个字段 table(Dropin、Doctor 和 Lawyer)。
[
'class' => 'kartik\grid\BooleanColumn',
'vAlign' => 'middle',
'label' => 'Dropin',
'value' => function($model, $index, $dataColumn) {
return $model->getAttendances('Dropin');
},
],
[
'class' => 'kartik\grid\BooleanColumn',
'vAlign' => 'middle',
'label' => 'Doctor',
'value' => function($model, $index, $dataColumn) {
return $model->getAttendances('Doctor');
},
],
[
'class' => 'kartik\grid\BooleanColumn',
'vAlign' => 'middle',
'label' => 'Lawyer',
'value' => function($model, $index, $dataColumn) {
return $model->getAttendances('Lawyer');
},
],
当前模型(Customers)中定义的getAttendences函数
public function getAttendances($field_to_search)
{
$model = Attendance::find()->where(['CustomersID'=>$this->ID])->one();
if (! empty($model)) {
//design my GridView
$value = $model->$field_to_search;
}
else
{
$value = 0;
}
return $value;
}
我正在发布项目:
https://github.com/open-ecommerce/oe-dropin
万一你想看看更好的帮助......
(这是一个免费的简单项目,我正在帮助为慈善机构开发)
我正在尝试在网格中显示来自另一个模型的字段,但无法正常工作。
我有 2 个表:Customers 和 Attendance,我只需要为每个客户带来今天的出勤率。
从出勤率来看,我正在尝试获得该字段attendance.doctor
在网格中,我正在尝试获取一个函数,但无法正常工作。
$gridColumns = [
[
'label' => 'Doctor',
'value' => function ($model, $index, $dataColumn) {
return $model->attendance->doctor;
},
],
...
];
"value" 的闭包是:
function($model, $key, $index, $widget) {
return $model->attendance->doctor->name;
}
或者您可以这样做:
"value" => "attendance.doctor.name"
文档:http://www.yiiframework.com/doc-2.0/guide-output-data-widgets.html#column-classes
我花了几个小时,但我发现这个方法可能不是最好的,但很有效。
在视图中,我使用的是 kartik 网格,但与默认网格的工作方式相同。
我想从出勤表中获得 3 个字段 table(Dropin、Doctor 和 Lawyer)。
[
'class' => 'kartik\grid\BooleanColumn',
'vAlign' => 'middle',
'label' => 'Dropin',
'value' => function($model, $index, $dataColumn) {
return $model->getAttendances('Dropin');
},
],
[
'class' => 'kartik\grid\BooleanColumn',
'vAlign' => 'middle',
'label' => 'Doctor',
'value' => function($model, $index, $dataColumn) {
return $model->getAttendances('Doctor');
},
],
[
'class' => 'kartik\grid\BooleanColumn',
'vAlign' => 'middle',
'label' => 'Lawyer',
'value' => function($model, $index, $dataColumn) {
return $model->getAttendances('Lawyer');
},
],
当前模型(Customers)中定义的getAttendences函数
public function getAttendances($field_to_search)
{
$model = Attendance::find()->where(['CustomersID'=>$this->ID])->one();
if (! empty($model)) {
//design my GridView
$value = $model->$field_to_search;
}
else
{
$value = 0;
}
return $value;
}
我正在发布项目:
https://github.com/open-ecommerce/oe-dropin
万一你想看看更好的帮助......
(这是一个免费的简单项目,我正在帮助为慈善机构开发)