PHP: 如何根据id作为外键显示来自其他模型的数据?

PHP: How to show data from other model based on an id as foreign key?

我有一个使用 yii2 框架的应用程序。

我的应用程序有一个包含 tables:

的数据库
  1. class =>

    • id => 作为 PK
    • class_name
    • teacher_id
  2. student =>

    • id
    • class_id => 作为 class_id 作为来自 class table
    • 的外键
    • student_name
    • 年龄
    • 性别
  3. 等等

在我的 index.php(class) 中,我使用 Kartik Gridview 来显示 class 的数据。 大家知道,gridview中有很多动作,比如view按钮动作。 例子: 我的 index.php 以 gridView 形式显示来自 classid = 101 的数据。

如何显示 student table 中 class_id = 101 的所有 student_name

我有这个代码:

在我的 class.php 在我的 class 模型中

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

以及我的 gridView 的代码

view.php 在我的 class 视图中

<?=
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"
        ],
    ],
])
?>

我们将不胜感激 :),谢谢 :)

对于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')),
},