Yii2更新控制器中的查询不起作用

时间:2018-10-26 04:24:26

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

1 个答案:

答案 0 :(得分:0)

1。使用save()

insert()为true时,此方法将调用$isNewRecord,而当update()为false时,该方法将调用$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()

当不需要数据验证并且仅需要更新一小部分属性时,此方法是update()的快捷方式。您可以将要更新的属性指定为名称列表或名称/值对。如果是后者,则将相应地修改相应的属性值。然后,该方法会将指定的属性保存到数据库中。

请注意,此方法将不会执行数据验证,也不会触发事件。

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