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

时间:2017-02-02 06:55:55

标签: php gridview yii2 kartik-v

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

我的应用程序有一个包含表格的数据库:

  1. class =>

    • id =>如 PK
    • CLASS_NAME
    • teacher_id
  2. student =>

    • ID
    • class_id => as class_id 作为class table
    • 的外键
    • student_name
    • 年龄
  3. 在我的index.php( class )中,我使用Kartik Gridview来显示类的数据。 如您所知,gridview中有许多操作,例如 view 按钮操作。 例: 我的 index.php 以gridView格式显示来自classid = 101的数据。

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

    我有这段代码:

    在我的班级模型

    中的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 个答案:

答案 0 :(得分:2)

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