gridview — PHP: Как показать данные из другой модели на основе идентификатора в качестве внешнего ключа?

У меня есть приложение, использующее фреймворк yii2.

У моего приложения есть БД, которая содержит таблицы:

  1. class =>

    • id => as PK
    • class_name
    • teacher_id
  2. student =>

    • Я бы
    • class_id => как ID класса как внешний ключ от class Таблица
    • Имя ученика
    • возраст
    • секс
  3. Так далее

и в моем index.php (учебный класс), Я использую Kartik Gridview для показа данных класса.
Как вы знаете, в gridview есть много действий, таких как Посмотреть действие кнопки.
Пример:
мой index.php показать данные из class с id = 101 в форме сетки.

Как я могу показать все student_name от student стол, который имеет class_id = 101?

и у меня есть этот код:

в моем class.php в моей модели класса

public function getStudents() {
return $this->hasMany(students::className(), ['class_id' => 'class_id']);
}

и код для моего gridView

view.php в моем классе

<?=
DetailView::widget([
'model' => $model,
'condensed' => true,
'hover' => true,
'enableEditMode' => false,
'mode' => DetailView::MODE_VIEW,
'panel' => [
'heading' => 'Data Detail',
'type' => DetailView::TYPE_INFO,
],
'attributes' => [
'alamat_lengkap',
'jumlah_dpp',
'jumlah_ppn',
'jumlah_ppnbm',
'fg_uang_muka',
'uang_muka_dpp',
'uang_muka_ppn',
'uang_muka_ppnbm',
[
'label' => 'Kode Objek',
'value' => $model->students->student_name,     //this code didn't work and return error as "Trying to get property of non-object"],
],
])
?>

Любая помощь будет оценена :), спасибо 🙂

1

Решение

За DetailView :

'value' => implode(',', \yii\helpers\ArrayHelper::map($model->fakturOutDetails, 'id', 'student_name')),

За GridView :

'value' => function($model) {
return implode(',', \yii\helpers\ArrayHelper::map($model->fakturOutDetails, 'id', 'student_name')),
},
2

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

Других решений пока нет …

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