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...catch
thờ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...catch
gó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;