У меня проблема с Gridview с использованием kartik \ grid \ EditableColumn, после изменения значения мне возвращается неправильное значение для столбца при его обновлении. Мне возвращают выпадающий ключ / целую таблицу, а не строку, содержащуюся в связанной таблице.
У меня есть две таблицы
Leads - столбцы id и status_id
Связанные поля - модель, поле, related_value, related_value
Отношение основано на этом случае
model:"Leads",
field:"status_id",
related_id:status_id
У меня есть следующее отношение в моей модели
public function getStatus()
{
return $this->hasOne(RelatedFields::className(), ["related_id" => "status_id"])->andOnCondition(["status.field" => "status_id", "status.model"=>"Leads"])->from(["status" => RelatedFields::tableName()]);
}
Я также создал следующее в качестве теста на основе эта ссылка
public function getStatusValue()
{
return $this->status->related_value;
}
Вот код столбца
[
'class' => 'kartik\grid\EditableColumn',
'attribute' => 'status_id',
'value'=>'status.related_value',
//'value' => function($model){ return $model->status->related_value; },
//'value' => function($model){ return $model->StatusValue; },
//'refreshGrid' => true,//Works but not nice
'vAlign'=>'middle',
'hAlign'=>'center',
'pageSummary' => true,
'readonly' => false,
'width'=>'10%',
'filter'=>Html::activeDropDownList($searchModel, 'status', ArrayHelper::map(RelatedFields::Find()->where(['model' =>"Leads","field"=>"status_id"])->all(), 'related_id', 'related_value'),['class' => 'form-control','prompt' => Yii::t('app', '')]),
'editableOptions'=> [
//'attribute'=>'status_id',
//'value'=>'status.related_value',
//'header' => 'profile',
//'format' => Editable::FORMAT_BUTTON,
'inputType' => Editable::INPUT_DROPDOWN_LIST,
'data'=> ArrayHelper::map(RelatedFields::Find()->where(['model' =>"Leads","field"=>"status_id"])->all(), 'related_id', 'related_value'),
]
],
Закомментировано несколько строк в моих попытках исправить проблему, а также их комбинации, однако все они приводят к неправильному значению.
Если, например, я выберу соответствующее значение «New», которое имеет related_id 1, после обновления столбца я получу значение 1 вместо «New».
Когда таблица загружается / перезагружается впервые, значение отображается правильно.
Я мог бы перезагрузить сетку, но это кажется неправильным, просто чтобы исправить 1% данных, показанных на странице.