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

时间:2017-11-15 05:52:49

标签: php yii2 updatemodel

我想更新我的extension String { func isValidBitcoinAddress() -> Bool { let addressComponents = self.components(separatedBy: ":") guard addressComponents.count == 2, addressComponents[0] == "bitcoin" else { return false } let address = addressComponents[1] let pattern = "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$" let range = address.range(of: pattern, options: .regularExpression) return range == address.indices } } 。情景是,我有一个“状态”。列,我想table/model此列为值,然后根据SET更新模型。我想做id语句之类的事情。

update

我的Update 'table' SET status = 'status value' where id = 'myid'看起来像

action controller

我已经搜索过但无法找到解决方案

任何帮助都将受到高度赞赏

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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行更新,则表示您的某些数据不符合验证规则..并且您应该检查此

答案 2 :(得分: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
}

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