yii2使用另一个表中的记录填充网格

时间:2015-02-23 10:53:51

标签: php grid left-join yii2

我正在尝试从网格中的另一个模型显示字段,但我无法使其正常工作。

我有两张桌子:客户出席,我只需要为每位客户带来今天的出席情况。

从出席情况来看,我正在努力获得实地考勤。医生

在网格中我试图获得一个功能但是没有工作。

$gridColumns = [
    [
        'label' => 'Doctor',
        'value' => function ($model, $index, $dataColumn) {
            return $model->attendance->doctor;
        },
    ],

    ...
];

2 个答案:

答案 0 :(得分:0)

“价值”的关闭是:

function($model, $key, $index, $widget) {
  return $model->attendance->doctor->name;
}

或者你可以这样做:

"value" => "attendance.doctor.name"

Doc:http://www.yiiframework.com/doc-2.0/guide-output-data-widgets.html#column-classes

答案 1 :(得分:0)

花了我几个小时,但我发现这可能不是最好的方式,但有效。

在视图中我使用的是kartik网格,但与默认网格的工作方式相同。

我想从考勤表(Dropin,Doctor和Lawyer)获得3个字段。

        [
    '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');
                },
    ],

getAttendences函数在当前模型(Customers)中定义

    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

如果你想看看更好的帮助......

(这是一个免费的简单项目,我正在帮助慈善机构开发)