Php 相关模型中的yii2排序

Php 相关模型中的yii2排序,php,sorting,yii2,models,Php,Sorting,Yii2,Models,有关系 model Shop.php public function getShopAddr() { return $this->hasOne(SprShopAddr::className(), ['id' => 'shop_addr_id']); } <?= GridView::widget([ 'dataProvider' => $dataProvider,

有关系

model Shop.php

  public function getShopAddr()
        {
            return $this->hasOne(SprShopAddr::className(), ['id' => 'shop_addr_id']);
        }
 <?= GridView::widget([
            'dataProvider' => $dataProvider,
            //'filterModel' => $searchModel,
            'summary' =>false, 
            'columns' => [
                'location_code',
                [
                    'label' => 'Дивизион',
                    'attribute' => 'division_id',
                    'value' => 'shopAddr.division.division'
                ],
                ['class' => 'yii\grid\ActionColumn', 'template' => '{update}{delete}'],        
            ]
        ]); ?>
模型SprShopAddr.php

public function getDivision()
    {
        return $this->hasOne(SprDivision::className(), ['id' => 'division_id']);
    }
public function getShopAddrs()
    {
        return $this->hasMany(SprShopAddr::className(), ['division_id' => 'id']);
    }
模型SprDivision.php

public function getDivision()
    {
        return $this->hasOne(SprDivision::className(), ['id' => 'division_id']);
    }
public function getShopAddrs()
    {
        return $this->hasMany(SprShopAddr::className(), ['division_id' => 'id']);
    }
查看index.php

  public function getShopAddr()
        {
            return $this->hasOne(SprShopAddr::className(), ['id' => 'shop_addr_id']);
        }
 <?= GridView::widget([
            'dataProvider' => $dataProvider,
            //'filterModel' => $searchModel,
            'summary' =>false, 
            'columns' => [
                'location_code',
                [
                    'label' => 'Дивизион',
                    'attribute' => 'division_id',
                    'value' => 'shopAddr.division.division'
                ],
                ['class' => 'yii\grid\ActionColumn', 'template' => '{update}{delete}'],        
            ]
        ]); ?>


在gridview上对字段shopAddr.division.division进行排序不工作。如何修复?

对于相关型号,必须正确配置数据提供程序的
设置排序功能

您可以在中找到正确的信息

最重要的部分是,您必须在
yourModelSearch
中定义$dataProvider->setSor(…)函数,如下所示

 $dataProvider->setSort([
        'attributes' => [
            'yuorRelatedFieldName' => [
                            'asc' =>    [ $tableRelated . '.yourField' => SORT_ASC ],
                            'desc' =>   [ $tableRelated . '.yourField' => SORT_DESC ],
                            'label' => 'yuorLabel'
            ],                 
        ],
        'defaultOrder' => ['yuorDefaultOrderField' => SORT_ASC],
   ]);

我阅读了本教程,我的问题与shopAddr.division.division的关系为3,而不是教程中的2。此外,在本教程的场景3中,排序由
yuorModelSearch
管理。如果未配置此部件,网格视图中的相关字段不允许排序