我们都使用 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;
}
相反,一个包装在try...catch中的DB::transaction()
:
// Transaction
$exception = DB::transaction(function() {
// try...catch
try {
// Do your SQL here
}
catch(Exception $e) {
return $e;
}
});
return is_null($exception) ? true : false;
或者仅仅是没有 try...catch 的交易
// Transaction only
$exception = DB::transaction(function() {
// Do your SQL here
});
return is_null($exception) ? true : false;
DB::beginTransaction()
和DB:transaction()
有什么区别? - Hamed Kamrava