php异常处理和错误处理,在tp3中,默认的数据库驱动位于Think\Db\Driver命名空间下面,驱动类必须继承Think\Db类,每个数据库驱动必须要实现的接口方法包括(具体参数可以参考现有的数据库驱动类库)
默认的数据库驱动位于ThinkDbDriver命名空间下面,驱动类必须继承ThinkDb类,每个数据库驱动必须要实现的接口方法包括(具体参数可以参考现有的数据库驱动类库)
事务异常处理
开启事务方法 startTrans()
事务提交方法 commit()
事务回滚方法 rollback()
<?php
namespace Home\Controller;
use Think\Controller;
use Home\Model\UserModel;
use Home\Model\UserBalanceDetailModel;
class IndexController extends Controller
{
public function index()
{
$this->show('');
}
/**
* 新增更新数据
*
* @Author chambers
* @email chambers@qq.com
* @DateTime 2021-12-26 11:52:02
* @version 1.0.0
* @return void
*/
public function change_user_balance() {
$userModel = new UserModel();
$userBalanceDetailModel = new UserBalanceDetailModel();
$model = M();
$model->startTrans();
$resultUser = $userModel->save();
$resultUserBalanceDetail = $userBalanceDetailModel->save();
if($resultUser && $resultUserBalanceDetail){
var_dump($resultUser);
//提交处理数据
$model->commit();
} else {
var_dump($resultUser);
//数据回滚处理
$model->rollback();
}
}
/**
* 新增更新数据
*
* @Author chambers
* @email chambers@qq.com
* @DateTime 2021-12-26 11:52:02
* @version 1.0.0
* @return void
*/
public function change_user_balance_demo_two() {
$userModel = new UserModel();
$userBalanceDetailModel = new UserBalanceDetailModel();
$model = M();
try {
$model->startTrans();
$resultUser = $userModel->save();
if(!$resultUser) {
throw new \Exception('账户更新更新失败, 请重新尝试');
}
$resultUserBalanceDetail = $userBalanceDetailModel->save();
if(!$resultUserBalanceDetail) {
throw new \Exception('账户明细更新失败, 请重新尝试');
}
} catch (\Exception $e) {
// rollback
$model->rollback();
$this->error($e->getMessage(), '', true);
}
if($resultUser && $resultUserBalanceDetail){
//提交处理数据
$model->commit();
}
}
}
异常信息返回
{
"info": "账户更新更新失败, 请重新尝试",
"status": 0,
"url": ""
}
转载注明:
感谢博主,喝杯咖啡~
感谢博主,喝杯咖啡~
还没有人发表评论