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;

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

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

3 ответа

Решение

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

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

 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
}

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

Для получения модели, связанной с $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 обновляется тонко, это означает, что некоторые ваши данные не соответствуют правилам проверки.. и вам следует проверить это

Попробуй вот так,

  $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();
Другие вопросы по тегам