一个控制器里如果model层操作了多张表,可以在控制层用事务回滚。
实现代码
use Think\Model;
class OrderController extends Controller{
public function like()
{
//开始事务
$model = new Model();
$model->startTrans();
$flag = 0;
try{
D(self::$MOMENTS_MODEL)->like();
$ajaxReturnData['status'] = 1;
$ajaxReturnData['message'] = 'success';
$flag = 1;
}catch (\Exception $e){
$ajaxReturnData['status'] = 0;
$ajaxReturnData['message'] = 'fail';
$flag = 2;
}
if($flag == 1) {
//成功则提交
$model->commit();
}else if($flag == 2){
//失败则回滚
$model->rollback();
}
$this->ajaxReturn($ajaxReturnData);
}
}