Это мой первый раз использовать DB::transaction()
, но как именно он работает, если транзакция терпит неудачу или будет успешной? В приведенном ниже примере мне нужно вручную присвоить значение для возврата true
, или если он завершится с ошибкой, метод вернет false
или полностью выйдет из транзакции (поэтому пропуская остальную часть кода)? Документы не так полезны.
use Exception;
use DB;
try {
$success = DB::transaction(function() {
// Run some queries
});
print_r($success);
} catch(Exception $e) {
echo 'Uh oh.';
}
Решение
Я записал это решение для других, которым может быть интересно.
Поскольку я больше беспокоился о возврате логического значения в зависимости от успеха моего запроса, с несколькими изменениями он теперь возвращает true/false
в зависимости от его успеха:
use Exception;
use DB;
try {
$exception = DB::transaction(function() {
// Run queries here
});
return is_null($exception) ? true : $exception;
} catch(Exception $e) {
return false;
}
Обратите внимание, что переменная $exception
никогда не возвращается, так как если что-то пойдет не так с вашим запросом, catch
немедленно запускается, возвращая false
. Спасибо @ilaijin за то, что объект Exception
вызывается, если что-то пойдет не так.