иметь отношение
модель 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 не работает. Как это исправить?
для связанной модели вы должны правильно настроить 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],
]);
Других решений пока нет …