Yii-2如何根据id更新记录

问题描述 投票:0回答:3

我想更新我的table/model。场景是,我有一个'状态'列,我想SET这个列为一个值,然后根据id更新模型。我想做像update声明这样的事情。

Update 'table' SET status = 'status value' where id = 'myid'

我的action controller看起来像

$model = $this->findModel($id);
$ogp_id = $model->id;
$status = $model->status;

我搜索过它但找不到解决方案

任何帮助将受到高度赞赏

php yii2 updatemodel
3个回答
2
投票

试试这样,

  $model =Table::find($id);
    $model->status = 'Active';
    $model->save();

也可以使用Create命令直接使用如下:

Yii::$app->db->createCommand("UPDATE table SET status=:status WHERE id=:id")
->bindValue(':id', your_id)
->execute();

2
投票

用于检索$ id相关模型如果id是主键,则可以使用findOne($ id)

$model =YourModel::findOne($id);
$model->status = 'Active';
$model->save();

或者find() - > Where() - >一般情况下的one()

$model =YourModel::find()-where(['id'=>$id])->one();
$model->status = 'Active';
$model->save();

如果您的验证规则失败,您可以尝试使用$model->save(false);,如果在这种情况下e行更新瘦意味着您的某些数据不遵守验证规则..并且您应该检查这个


1
投票

这对我有用

我添加了一个功能

 protected function findModel($id)
{
    if (($model = Ogpheader::findOne($id)) !== null) {
        return $model;
    } else {
        throw new NotFoundHttpException('The requested page does not exist.');
    }
}

然后在控制器内访问它

$model = $this->findModel($id);
$ogp_id = $model->id;

然后在保存我的模型时,我做了以下操作

if($m->save())
{
   $model->status = Ogpheader::$status_titles[1];
   $model->update();
   //my other code
}

这已更新我的表并根据需要设置列

© www.soinside.com 2019 - 2024. All rights reserved.