Я пытаюсь обновить столбец "страница", но он не работает. Я хочу обновить только один столбец, изменив данные с 4 на 5. Тип данных - целое число.
Вид
<div class = "row">
<div class = "col-sm-12 text-center">
<?= Html::a('Add as memoriam', ['update-status', 'id' => $model->ID], [
'class' => 'btn bg-maroon',
'data' => [
'confirm' => 'Are you sure you want to add '.$model->name.' into the dearly departed?',
'method' => 'post',
],
]) ?>
</div>
</div>
Контроллер
public function actionUpdateStatus($id)
{
$model = $this->findModel($id);
$model->page = 5;
if ($model->save())
$this->redirect(array('view', 'id' => $model->id));
return $this->redirect(['my-obituary']);
}
1. Использование спасти()
Этот метод вызывает вставлять(), если $ isNewRecord истинно, или Обновить(), когда $ isNewRecord ложно.
public function actionUpdateStatus($id)
{
$model = $this->findModel($id);
$model->page = 5;
if ($model->save(true, ['page'])) {
$this->redirect(array('view', 'id' => $model->id));
}
return $this->redirect(['my-obituary']);
}
2. Использование updateAttributes ()
Этот метод является сокращением для Обновить(), когда проверка данных не требуется и необходимо обновить только небольшой набор атрибутов. Вы можете указать атрибуты для обновления в виде списка имен или пар имя-значение. В последнем случае соответствующие значения атрибутов будут соответственно изменены. Затем метод сохранит указанные атрибуты в базе данных.
Обратите внимание, что этот метод не выполняет проверку данных и не запускает события.
public function actionUpdateStatus($id)
{
$model = $this->findModel($id);
$model->page = 5;
if ($model->updateAttributes(['page' => 5])) {
$this->redirect(array('view', 'id' => $model->id));
}
return $this->redirect(['my-obituary']);
}
Да, он работает, используя оба ваших решения. Спасибо !