public function store(Request $request, $id)
{
$externalAccount = ExternalAccounts::find($id);
DB::beginTransaction();
try {
$externalAccount->fund_number = 999;
$externalAccount->capital_balance = 'kjhkjhkj';
$externalAccount->save();
DB::commit();
} catch (Exception $e){
DB::rollback();
throw $e;
}
}
第一次用Laravel。。
capital_balance字段为int类型,我故意传进去字符串类型,这样写入肯定会出错的。
但是上面的fund_number居然写入成功了,没有回滚= =。。
求老司机解答。。
mysql引擎没错,是InnoDB。
怪我咯2017-04-10 16:18:58
Laravel框架已经重写了各种exception异常处理类
事务提交的异常处理类为IlluminateDatabaseQueryException,所以用exception类是捕获不到事务提交错误的异常的
try {}
} catch (\Illuminate\Database\QueryException $e) {
// var_dump($e);
}
这样才能捕获到