**
事物的使用
**。
1.try的使用;
try catch只会捕捉程序异常!
Db::startTrans();
try{
self::changeUserMoney($data);
Db::commit();
exit(‘success’); //返回成功 不要删除哦
}catch (\Exception KaTeX parse error: Expected '}', got 'EOF' at end of input: …ts('error.txt',data.PHP_EOL,FILE_APPEND);
Db::rollback();
exit(‘fail’);
}
echo 1;
不管事务中是否出错,echo 1始终会执行;
public function index(){
Db::startTrans();
try{
Db::name(‘user’)->setDec(‘a’,1);
}catch (\Exception KaTeX parse error: Expected '}', got 'EOF' at end of input: … new Exception(exception->getMessage());
Log::error($exception->getMessage());
}
dump(‘这里始终会执行!’);
}
这种情况不会执行会抛出异常!后续不会执行!
public function index(){
Db::startTrans();
try{
Db::name(‘user’)->setDec(‘a’,1);
}catch (\Exception $exception){
$err = [
‘code’ => $exception->getCode(),
‘msg’ => $exception->getMessage(),
‘file’ => $exception->getFile(),
’line‘=>exception>getLine()];@fileputcontents(′error.txt,jsonencode(exception->getLine()];@file_put_contents('error.txt', json_encode(exception>getLine()];@fileputcntents( ‘error.txt ′,jsonencode(err).PHP_EOL ,FILE_APPEND);
}
}
下面这种情况,如果需要手动抛出的异常可在有异常的地方处理,然后会
进入到catch中然后再进行抛出。
public function index(){
Db::startTrans();
try{
self::changeUserMoney();
Db::commit();
exit(‘success’);
}catch (\Exception KaTeX parse error: Expected '}', got 'EOF' at end of input: … new Exception(exception->getMessage());
$err = [
‘code’ => $exception->getCode(),
‘msg’ => $exception->getMessage(),
‘file’ => $exception->getFile(),
‘line’=>exception->getLine()];@fileputcontents(′error.txt‘,jsonencode(exception->getLine()];@file_put_contents('error.txt',json_encode(exception->getLine()];@fileputcontents( ’error.txt ′,jsonencode(err).PHP_EOL ,FILE_APPEND);
}
}
public function changeUserMoney(){
res=Db::name(′salesman′)−>where("id",4)−>update([′status′=>0]);if(empty(res=Db::name('salesman')->where("id",4)->update(['status'=>0]);if(empty(res=Db::name(
′salesman ′)−>where("id",4)−>update([ ′status ′=>0]);if(empty(res)){throw new Exception(‘更新失败!’);
}
}
2.普通的操作;
$arr_1 = 1;
$arr_2 = 2;
//当$arr_1为1的时候执行此程序;
If($arr_1 == 1){
//$arr_1赋值为3;
$arr_1 = 3;
}
3.ThinkPHP提供了单数据库的事务,5.3.19支持
开启事务:
$user->startTrans();
提交事务:
$User->commit();
事务回滚:
$User->rollback();
例如:
1 // 在User模型中启动事务
2 $User->startTrans()
3 // 进行相关的业务逻辑操作
4 $Info = M("Info"); // 实例化Info对象
5 $Info->save($User); // 保存用户信息
6 if (操作成功){
7 // 提交事务
8 $User->commit()
9 }else{
10 // 事务回滚
11 $User->rollback()
12 }
希望对您有所帮助。
注: 如有版权问题请联系本人 微信号:Strive-juvenile