@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());
        }
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 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();
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Bezlimit Москва
от 100 000 до 130 000 руб.
Sky Way Capital Москва
от 100 000 до 150 000 руб.
22 авг. 2019, в 02:23
60000 руб./за проект
22 авг. 2019, в 02:15
5000 руб./за проект
22 авг. 2019, в 01:00
300 руб./за проект