最佳答案
对于多个插入查询,我们都使用 DB::transaction()
。在这样做的时候,应该把 try...catch
放在它里面还是包装它?如果出现问题,事务将自动失败,那么是否有必要包含 try...catch
?
包装事务的 try...catch
示例:
// 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;
}
相反,一个 DB::transaction()
包装了一个 try... 接住:
// Transaction
$exception = DB::transaction(function() {
// try...catch
try {
// Do your SQL here
}
catch(Exception $e) {
return $e;
}
});
return is_null($exception) ? true : false;
Or simply a transaction w/o a try...catch
// Transaction only
$exception = DB::transaction(function() {
// Do your SQL here
});
return is_null($exception) ? true : false;