Как отловить ошибку транзакции БД в глобальном масштабе

Я использую транзакции почти везде в моем приложении Laravel. Вот пример кода, который я написал в контроллерах.

DB::beginTransaction();
try{
Language::create(['name'=>"good"]);
Role::create(['name'=>'admin']);
DB::commit();
}
catch(\Exception $e){
DB::rollback();
return response()->json(['message'=>'error']);
}

Плохо то, что я не хочу все время писать операторы try catchs, это утомительно и делает код больше. Я хочу отлавливать ошибки транзакций базы данных во всем мире.

Итак, я обнаружил, что могу написать что-то вроде этого:

DB::transaction(function () {
DB::table('users')->update(['votes' => 1]);

DB::table('posts')->delete();
});

Вопрос — но плохо в том, что как отлавливать ошибки в глобальном исключении handler.php в laravel? Я знаю, что это вызывает исключения Throwable или Exception, но в моем handler.php я также ловлю и другие типы ошибок. Теперь throwable и Exception — это типы, которые встречаются почти для чего-либо подобного — модель не может быть найдена. Поэтому мне нужно, чтобы в моем handler.php был способ предположить, что полученное исключение действительно составляет 100% от исключения транзакции базы данных. Если вопрос не ясен, не стесняйтесь комментировать, и я объясню дальше.

0

Решение

Задача ещё не решена.

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

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

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