Задать вопрос
@McMike

Как правильно удалять модели внутри транзакции?

Открываю транзакцию, затем делаю на модели ->delete().
Затем делаю rollback, но по итогу данные в базе удалены.

Как правильно использовать удаление модели и транзакции?

$transaction = \Yii::$app->db->beginTransaction();
        try {
            $params = Param::findAll(['type_id' => $typeId]);
            foreach ($params as $param) {
                if (!$param->delete()) {
                    throw new Exception('deleting error');
                }
            }
            $transaction->commit();
        } catch (\Exception $e) {
            $transaction->rollBack();
            $this->error('Transaction rollback with error - ' . $e->getMessage());
        }
  • Вопрос задан
  • 67 просмотров
Подписаться 1 Простой 12 комментариев
Пригласить эксперта
Ответы на вопрос 1
@eternalfire
Привет!
В общих чертах так
$transaction = $connection->beginTransaction();
try {
    $model->delete();
    $transaction->commit();
} catch (\Exception $e) {
    $transaction->rollBack();
    throw $e;
}

или
$transaction = $connection->beginTransaction();
if ($model->delete()) {
    $transaction->commit();
} else {
    $transaction->rollBack();
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы