Это зависит от ситуации.
Если запись была удалена чем-то вроде $model->delete()
и у вас все еще есть экземпляр $model
, чем вы можете сделать $model->save()
для его восстановления, потому что даже после удаленияэкземпляр $ model все еще имеет значения атрибутов до удаления.
Если вы уже потеряли экземпляр $model
или если у вас его никогда не было на первом месте (например, потому что удаление было выполненоиспользуя что-то вроде Model::deleteAll($condition)
, тогда вы не сможете восстановить его, используя этот подход.
Это также не восстановит все связанные записи, которые могут быть удалены ON DELETE CASCADE
.
Если вам нужновосстановить запись в запросе, отличном от того, который ее удалил. Вы можете сохранить $model
в сеансе, затем получить его оттуда и сделать $model->save()
Например, вот так:
public function actionDelete()
{
$model = Author::findOne(2);
$model->delete();
Yii::$app->session->set('model', $model);
}
public function actionRestore()
{
if (Yii::$app->session->has('model')) {
$model = Yii::$app->session->get('model');
$model->save();
}
}