Tất cả chúng ta đều sử dụng DB::transaction()cho nhiều truy vấn chèn. Khi làm như vậy, nên try...catchđặt bên trong nó hay gói nó? Thậm chí có cần thiết phải bao gồm try...catchthời điểm một giao dịch sẽ tự động thất bại nếu có sự cố xảy ra không?
Mẫu try...catchgói một giao dịch:
// try...catch
try {
// Transaction
$exception = DB::transaction(function() {
// Do your SQL here
});
if(is_null($exception)) {
return true;
} else {
throw new Exception;
}
}
catch(Exception $e) {
return false;
}
Ngược lại, một DB::transaction()gói một thử ... bắt:
// Transaction
$exception = DB::transaction(function() {
// try...catch
try {
// Do your SQL here
}
catch(Exception $e) {
return $e;
}
});
return is_null($exception) ? true : false;
Hoặc đơn giản là một giao dịch có thử ... bắt
// Transaction only
$exception = DB::transaction(function() {
// Do your SQL here
});
return is_null($exception) ? true : false;