транзакция не работает в Laravel

У меня проблема с транзакциями в laravel.
Когда я пытаюсь выполнить эту операцию со следующим кодом, на экране появляется ошибка, как будто у меня не было транзакции.

\DB::transaction(function() use ($movement, $movementRows) {
$movement->save();
$movement->rows()->saveMany($movementRows);
});

и когда я пытаюсь сделать это с кодом ниже, первый объект сохраняется, хотя второй не удается.

\DB::beginTransaction();
try {
$movement->save();
$movement->rows()->saveMany($movementRows);
\DB::commit();
$success = true;
} catch (\Exception $e) {
$success = false;
\DB::rollback();
}

if ($success) {
// the transaction worked ...
}

2

Решение

Убедитесь, что вы используете движок, который поддерживает транзакции. InnoDB поддерживает транзакции, а MyIsam — нет. Так что откройте свою базу данных, например, в PhpMyAdmin и убедитесь, что для всех таблиц установлено значение InnoDB, а не MyISAM (при условии, что вы используете MySQL — вы не упомянули, какую базу данных вы используете).

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector