这就是我想要做的:
我将项目保存在模型中,然后调用一个方法,如果出现问题,该方法可以引发异常。
如果我捕获到异常,我想回滚,这是我对save方法的覆盖:
public function save($data) {
$db = JFactory::getDbo();
$db->transactionStart();
$retVal = parent::save($data);
if ($retVal) {
try {
$this->_doSomething();
$db->transactionCommit();
} catch (Exception $exc) {
$db->transactionRollback();
JFactory::getApplication('administrator')
->enqueueMessage($exc->getMessage(), 'error');
return false;// THIS MAKES ROLLBACK FAIL, TO MAKE IT WORK I HAVE TO COMMENT THIS.
}
}
return $retVal;
}
仅当我的方法无论如何返回true
时,它才起作用。
对我来说,在这种情况下该方法返回false
应该更正确,因为保存未完成 ,并且如果返回true
,Joomla将输出一个误导性消息,好像保存成功。
但是,如果确实进行回滚,它将失败。
如果方法save()
返回false
,会使回滚失败的原因是什么?