显示关系ActiveRecord的数据

时间:2015-02-13 07:45:45

标签: yii2 yii2-advanced-app

我的数据库中有2个表:

Prodik   prodik_id   prodik_name

Pelajaran   pelajaran_id   pelajaran_name   prodik_id

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

| prodik_name | pelajaran |

我是Yii2的新手,我尽力了,但仍然失败了。

1 个答案:

答案 0 :(得分:0)

首先为你的表创建模型。

    use yii\db\ActiveRecord;

class Prodik extends ActiveRecord
{

    public static function tableName()
    {
        return 'Prodik';
    }

    public function getPelajaran()
    {
        $this->hasOne(Pelajaran::className(), ['prodik_id' => 'prodik_id']);
    }
}

创建下一个模型:

use yii\db\ActiveRecord;

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,
            ]);
}

创建视图文件。

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