@SvizzZzy

Как использовать save model и transactions в laravel 5?

Пытаюсь сделать транзакции для нескольких save + еще несколько save в цикле foreach:

\DB::beginTransaction();
          try {
 
          $blabla1 = new Test1;
          $blabla1->blabla= 123;
          $blabla1->save();

          $rows = Test2::where('field', 'test')->get();
 
          foreach ($rows as $row) {
            $row->blabla111= 0; //специально допускаю ошибку (несущ.поле таблицы)
            $row->save();
          }

          \DB::commit(); 

          } catch (\Exception $e) { 
              \DB::rollBack();
          }


Проблема в том что \DB::rollBack(); вообще не работает, blabla1 сохраняет 123, а blabla111 разумеется нет (Exception срабатывает)
  • Вопрос задан
  • 684 просмотра
Пригласить эксперта
Ответы на вопрос 1
@SvizzZzy Автор вопроса
Оказалось, что в моем случае нужно было явно указать имя подключения к базе. И всё заработало нормально.
ps: rollBack(); - не пригодился т.к наверное, если $cn->commit(); не срабатывает, то все запросы отменяются.

Мой код:

$cn = DB::connection('ИМЯ_подкл_к_базе'); //DB_CONNECTION из ENV
$cn->beginTransaction();
  try{

  //Мои запросы типа Model::where, save() и тд...
  ...
  
  $cn->commit();

} catch(\Exception $e){

  return 'error';

}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы