yii2 заполнить сетку записью из другой таблицы

Я пытаюсь показать поля из другой модели в сетке, но не могу заставить ее работать.

У меня есть 2 таблицы: Клиенты а также посещаемость и мне нужно обеспечить только сегодняшнюю посещаемость для каждого клиента.

От посещаемости я пытаюсь получить на поле Летопись посещаемости.

В сетке я пытаюсь получить функцию, но не работает.

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

...
];

1

Решение

Закрытие для «значения»:

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

0

Другие решения

Это заняло у меня несколько часов, но я нашел способ, вероятно, не самый лучший, но работает.

в представлении я использую сетку kartik, но работает так же с сеткой по умолчанию.

У меня есть 3 поля, которые я хочу получить из таблицы посещаемости (Dropin, Doctor and 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');
},
],

Функция 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

В случае, если вы хотите взглянуть еще лучше помочь …..

(Это бесплатный простой проект, который я помогаю развивать для благотворительности)

0

По вопросам рекламы [email protected]