Php 如何将关系属性添加到gridview yii2?

Php 如何将关系属性添加到gridview yii2?,php,web,yii,yii2,frameworks,Php,Web,Yii,Yii2,Frameworks,我有一个新问题。 如何在views/viewname/index中显示gridview中其他表的关系值,并在其中添加确认按钮 多谢各位 获取可以添加到模型中的相关值 关系的函数 public function getYourRelatedModel() { return $this->hasOne(YourRelatedModel::className(), ['id' => 'your_id_fk']); } 然后为需要的字段添加一个getter public f

我有一个新问题。 如何在views/viewname/index中显示gridview中其他表的关系值,并在其中添加确认按钮

多谢各位




获取可以添加到模型中的相关值

关系的函数

public function getYourRelatedModel()
{
    return $this->hasOne(YourRelatedModel::className(), ['id' => 'your_id_fk']);
}
然后为需要的字段添加一个getter

public function getYour_field() {
    return $this->yourRelatedModel->your_field;
}
最后将列添加到gridview

'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        'id',
        'network',
        'technology',
        'sup_id',
        'speaker',
        'your_field',
如何在gridview中显示来自其他表的关系值

考虑订单和客户模型

然后,模型建立客户关系

public function getCustomer()
{
    return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
}
在订单列表页面中显示客户名称

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            [
              'label' => 'Customer',
              'attribute' => 'customer_id',
              'value' => function($data) {
                   return $data->customer->name;
               },
            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>


有没有什么方法可以把它链接起来

在网格列中添加“属性”,它解决了可排序问题

        [
            'value'=> 'customer.name',
            'label' => 'Customer Name',
        ],
试试这个来显示客户的名字


如果要对其进行排序,需要在searchModel中创建一个customerName伪属性并使用它。

是否有任何方法为此创建sortby链接?如果单击“按已单击的属性对每列进行排序”,则在每列的顶部。但当它是另一个表的属性时,它没有该链接。@areff。这可能有用。。看看场景2