Yii2 обновить запрос в контроллере не работает

Я пытаюсь обновить столбец "страница", но он не работает. Я хочу обновить только один столбец, изменив данные с 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']);
}
0
0
146
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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']);
}

Да, он работает, используя оба ваших решения. Спасибо !

No Imo 26.10.2018 09:09

Другие вопросы по теме