我的控制器代码以这种方式构建:
$connection = ConnectionManager::get('default');
$connection->begin();
try {
//Some logic here to create entities, validate and save them
//This code can throw exceptions
$connection->commit();
}
catch (Exception $e) {
$connection->rollback();
}
这是在CakePHP中使用事务的正确方法吗?如果确实抛出了异常,则会正确回滚事务,但会出现警告:
Warning: The connection is going to be closed but there is an active transaction.
我想,我错过了一个重点,因为我不明白为什么会发出这个警告。我一直认为,commit()
或rollback()
会关闭交易。我错了吗?
答案 0 :(得分:0)
好的,所以我一直试图找到这个问题的原因,因为现在已经有2个月或3个月了,就在我问过这个问题之后,我找到了它! 这是Stackoverflow魔术,每个人。
我的异常从未被捕获,因为我错过了catch
指令中的App\Controller\Exception
。由于我的代码位于控制器中,因此PHP假定只捕获catch (\Exception $e) {
(默认控制器命名空间)。要捕获所有异常,代码必须是
angular4
易。