我想更新我的table/model。场景是,我有一个'status‘列,我想将这个列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;我已经找过了,但没能找到解决办法
任何帮助都将不胜感激。
发布于 2017-11-15 06:56:26
这个对我有用
我增加了一个函数
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
}这更新了我的表,并根据需要设置了列。
发布于 2017-11-15 06:32:26
要检索$id相关模型,如果id是主键,则可以使用findOne($id)
$model =YourModel::findOne($id);
$model->status = 'Active';
$model->save();或者在一般情况下找到()->Where()->one()
$model =YourModel::find()-where(['id'=>$id])->one();
$model->status = 'Active';
$model->save();如果您的验证规则失败,您可以尝试使用$model->save(false);,如果在本例中e行被更新,则表示您的一些数据不遵守验证规则。你应该检查一下这个
发布于 2017-11-15 05:57:51
就像这样,
$model =Table::find($id);
$model->status = 'Active';
$model->save();还可以直接使用used命令,如下所示:
Yii::$app->db->createCommand("UPDATE table SET status=:status WHERE id=:id")
->bindValue(':id', your_id)
->execute();https://stackoverflow.com/questions/47300301
复制相似问题