显示关系ActiveRecord中的数据



我的数据库中有两个表:

Prodikprodik_idprodik_name

Pelajaranpelajaran_idpelajaran_nameprodik_id

我想在GridView中显示以下列的数据:

|prodik_name|pelajaran|

我是Yii2的新手,我已经尽力了,但还是失败了。

首先为您的表创建模型。

    use yiidbActiveRecord;
class Prodik extends ActiveRecord
{
    public static function tableName()
    {
        return 'Prodik';
    }
    public function getPelajaran()
    {
        $this->hasOne(Pelajaran::className(), ['prodik_id' => 'prodik_id']);
    }
}

创建下一个模型:

use yiidbActiveRecord;
class Pelajaran extends ActiveRecord
{
    public static function tableName()
    {
        return 'Pelajaran';
    }
} 

创建控制器:

public function actionGrid(){
    $query = Prodik::find()->with(['pelajaran']);
    $dataProvider = new ActiveDataProvider([
                'query' => $query,
            ]);
    return $this->render('grid', [            
                'dataProvider' => $dataProvider,
            ]);
}

创建视图文件。

<?= yiigridGridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yiigridSerialColumn'],
        'prodik_name',
        [
            'value' => function ($data) {
                return $data['pelajaran']['pelajaran_name']; // or return $data->pelajaran->pelajaran_name; 
            }
        ]
    ]
]); ?>

最新更新