0

我的数据库中有 2 个表:

产品 prodik_id prodik_name

Pelajaran pelajaran_id pelajaran_name prodik_id

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

|prodik_name|pelajaran|

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

4

1 回答 1

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; 
            }
        ]
    ]
]); ?>
于 2015-02-13T09:40:53.853 回答