Я пытаюсь использовать сортировку (в заголовке gridView) по записи 'id_state'last из отношения hasMany, и сортировка не применяется правильно.
таблиц:
формирование
идентификатор, имя
формирование_регистрация
идентификатор, id_formation, id_user
formation_registration_steps
id, id_formation_registration, id_state
Я пытаюсь получить эту последнюю строку состояния с отношением в yii2 следующим образом:
Модель формирования и регистрации:
public function getFormationRegistrationSteps()
{
return $this->hasMany(FormationRegistrationSteps::className(), ['id_formation_registration' => 'id']);
}
public function getFormationRegistrationStepsLast()
{
return $this->hasOne(FormationRegistrationSteps::className(), ['id_formation_registration' => 'id'])
->orderBy(['id' => SORT_DESC]);
}
Модель формирования и регистрацииПоиск:
public function search($params)
{
$query = FormationRegistration::find();
// add conditions that should always apply here
$query->joinWith('formationRegistrationStepsLast lastStep');
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$dataProvider->setSort([
'attributes' => [
'lastStep.id_state' => [
'asc' => ['lastStep.id_state' => SORT_ASC],
'desc' => ['lastStep.id_state' => SORT_DESC],
],
],
]);
//(..)
}
gridView
(..)
['attribute' => 'lastStep.id_state',
'format' => 'raw',
'value' => function ($model) {
if(isset($model->formationRegistrationSteps->id_sate))
return $model->formationRegistrationSteps->id_sate;
}
],
(..)