Yii-2, как обновить запись на основе id

Я хочу обновить мой 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;

Я искал это, но не мог найти решение

Любая помощь будет высоко оценен

0

Решение

для получения $ id связанной модели
Вы можете использовать findOne ($ id), если id является первичным ключом

$model =YourModel::findOne($id);
$model->status = 'Active';
$model->save();

или найти () -> Где () -> один () в общих случаях

$model =YourModel::find()-where(['id'=>$id])->one();
$model->status = 'Active';
$model->save();

если ваши правила проверки не пройдены, вы можете попробовать использовать $model->save(false); если в этом случае строка e обновляется тонко, это означает, что некоторые из ваших данных не соответствуют правилам проверки .. и вам следует проверить это

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

Это работает для меня

Я добавил функцию

 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
}

Это обновило мою таблицу и установить столбец как требуется

1
По вопросам рекламы [email protected]