Yii-2 如何根据 id 更新记录
Yii-2 how to update a record on basis of id
我想更新我的 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;
我已经搜索过了,但找不到解决方案
任何帮助将不胜感激
这样试试,
$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.');
}
}
然后在controller里面访问
$model = $this->findModel($id);
$ogp_id = $model->id;
然后在保存我的模型时我做了以下操作
if($m->save())
{
$model->status = Ogpheader::$status_titles[1];
$model->update();
//my other code
}
这已更新我的 table 并根据需要设置列
我想更新我的 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;
我已经搜索过了,但找不到解决方案
任何帮助将不胜感激
这样试试,
$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.');
}
}
然后在controller里面访问
$model = $this->findModel($id);
$ogp_id = $model->id;
然后在保存我的模型时我做了以下操作
if($m->save())
{
$model->status = Ogpheader::$status_titles[1];
$model->update();
//my other code
}
这已更新我的 table 并根据需要设置列