yii2 сортировка в родственной модели

иметь отношение

модель Shop.php

  public function getShopAddr()
{
return $this->hasOne(SprShopAddr::className(), ['id' => 'shop_addr_id']);
}

модель SprShopAddr.php

public function getDivision()
{
return $this->hasOne(SprDivision::className(), ['id' => 'division_id']);
}

модель SprDivision.php

public function getShopAddrs()
{
return $this->hasMany(SprShopAddr::className(), ['division_id' => 'id']);
}

просмотреть index.php

 <?= 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 не работает. Как это исправить?

2

Решение

для связанной модели вы должны правильно настроить setSort функция dataProvider

Вы можете найти нужную информацию в этот урок.

Наиболее важной частью является то, что вы должны определить функцию $ dataProvider-> setSor (…) в yourModelSearch как это

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]