Thinkphp6---开启事务
在使用Thinkphp6开发项目的时候,事务是我们经常遇到和处理的场景,那么该如何正确的使用事务呢?
第一步:引入Db
use think\facade\Db;
第二步:使用 transaction 方式
Db::transaction(function () { Db::table('think_user')->find(1); Db::table('think_user')->delete(1); });
或者是手动控制事务:
// 启动事务 Db::startTrans(); try { Db::table('think_user')->find(1); Db::table('think_user')->delete(1); // 提交事务 Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); }
示例代码:
<?php namespace app\controller; use app\BaseController; //1. 引用Db use think\facade\Db; class Index extends BaseController { public function index() { // Transaction 自动事务 Db::Transaction(function () { Db::name('user')->where('id', 19)->save(['price'=>Db::raw('price + 3')]); Db::name('user')->where('id', 20)->save(['price'=>Db::raw('price - 3')]); }); // startTrans 手动事务 Db::startTrans(); try { Db::name('user')->where('id', 19)->save(['price'=>Db::raw('price + 3')]); Db::name('user1')->where('id', 20)->save(['price'=>Db::raw('price - 3')]); Db::commit(); } catch (\Exception $e) { echo '执行SQL失败,开始回滚数据'; Db::rollback(); } return json($user); } }
打完收工!

浙公网安备 33010602011771号