首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii-2如何根据id更新记录

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

Stack Overflow用户
提问于 2017-11-15 05:52:48
回答 3查看 8.3K关注 0票数 0

我想更新我的table/model。场景是,我有一个'status‘列,我想将这个列SET为一个值,然后基于id更新模型。我想做一些类似于update语句的事情。

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

我的action controller看起来就像

代码语言:javascript
复制
$model = $this->findModel($id);
$ogp_id = $model->id;
$status = $model->status;

我已经找过了,但没能找到解决办法

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-15 06:56:26

这个对我有用

我增加了一个函数

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

然后在控制器内访问它。

代码语言:javascript
复制
$model = $this->findModel($id);
$ogp_id = $model->id;

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

代码语言:javascript
复制
if($m->save())
{
   $model->status = Ogpheader::$status_titles[1];
   $model->update();
   //my other code
}

这更新了我的表,并根据需要设置了列。

票数 1
EN

Stack Overflow用户

发布于 2017-11-15 06:32:26

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

代码语言:javascript
复制
$model =YourModel::findOne($id);
$model->status = 'Active';
$model->save();

或者在一般情况下找到()->Where()->one()

代码语言:javascript
复制
$model =YourModel::find()-where(['id'=>$id])->one();
$model->status = 'Active';
$model->save();

如果您的验证规则失败,您可以尝试使用$model->save(false);,如果在本例中e行被更新,则表示您的一些数据不遵守验证规则。你应该检查一下这个

票数 6
EN

Stack Overflow用户

发布于 2017-11-15 05:57:51

就像这样,

代码语言:javascript
复制
  $model =Table::find($id);
    $model->status = 'Active';
    $model->save();

还可以直接使用used命令,如下所示:

代码语言:javascript
复制
Yii::$app->db->createCommand("UPDATE table SET status=:status WHERE id=:id")
->bindValue(':id', your_id)
->execute();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47300301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档