Yii:在GridView中输出连接表中的列

flvtvl50  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(125)

我有一个名为source_message的表,我想显示一个名为translation的列,该列来自另一个名为message的表,该表没有模型。我想我可以只执行一个连接并输出值,但它不起作用。

public function actionIndex() {
    $searchModel = new Translations();
    $searchModel->load(Yii::$app->request->queryParams);

    $query = $searchModel->find()->select('source_message.*, message.*')->innerJoin('message', 'source_message.id = message.id');

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => new yii\data\ActiveDataProvider(['query' => $query]),
    ]);
}

在我看来,我有:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        'id'
        'message.translation',
    ]
]) ?>

所有关于这个主题的帖子都是关于连接有模型的表的。但是我不需要一个模型来连接消息表。我也试过用一个模型来连接,但是它也不起作用。我做错了什么?

mbzjlibv

mbzjlibv1#

请在视图中尝试以下代码

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        'id',
         [
          'attribute' => 'name_of_your_attribute',
          'label' => 'Your Label',
          'value' => function($model){
             return $model->name_relation->attribute_table;
           }
         ],
        'message.translation',
    ]
]) ?>

从模型访问关系,从关系访问属性,这适用于hasOne关系,但您需要在模型内部创建关系

相关问题