我正在尝试通过has_many关系中的'id_state'最后记录使用排序(在gridView的标题中),并且该排序不正确。
表格:
信息
id,姓名
formation_registration
id,id_formation,id_user
formation_registration_steps
id,id_formation_registration,id_state
我正在尝试使用yii2中的关系获取最后一个状态行,如下所示:
formationRegistration模型:
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]);
}
formationRegistrationSearch模型:
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;
}
],
(..)