我想更新我的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;
我搜索过它但找不到解决方案
任何帮助将受到高度赞赏
试试这样,
$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();
用于检索$ 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行更新瘦意味着您的某些数据不遵守验证规则..并且您应该检查这个
这对我有用
我添加了一个功能
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
}
这已更新我的表并根据需要设置列