Laravel 事务手动使用事务:


//Controller控制器顶部  
use LeagueFlysystemException;

//实际执行使用代码:

 //执行sql操作
    DB::beginTransaction();
    try {
        // 保存车辆信息
        $res1 = Test::create(['name' => 'test1']);
        if(!$res1){
            throw new Exception('error1', 1);
        }
        $res2 = DB::table('test')->where([['id', '=', $res2->id])->update(['name' => 'test2']);
        if(empty($res2)){
              throw new Exception('error2', 1);
        }
        
        DB::commit();

    } catch (Exception $e) {
        DB::rollBack();
        echo $e->getCode();
        echo $e->getMessage();
        echo $e->getLine();   
    }
    echo true;
}


官网文档:

手动使用事务

如果你想要手动开启事务从而对回滚和提交有更好的控制,可以使用 DB 门面的 beginTransaction 方法:

DB::beginTransaction();

你可以通过 rollBack 方法回滚事务:

DB::rollBack();

最后,你可以通过 commit 方法提交事务:

DB::commit();


那也有框架自动事务

想要在一个数据库事务中运行一连串操作,可以使用 DB 门面的 transaction 方法,使用 transaction 方法时不需要手动回滚或提交:如果事务闭包中抛出异常,事务将会自动回滚;如果闭包执行成功,事务将会自动提交:


DB::transaction(function () {
    DB::table('users')->update(['votes' => 1]);
    DB::table('posts')->delete();
});


本文链接二维码可以保存在本地:保存

| 浏览 (2064) | (258) | (0) | | 2017-12-03 16:24:24 |


相关文章

  1. Mac安装Swoole扩展phpize 时 Cannot find autoconf 解决方法
  2. mac下安装swoole扩展报错PHP Startup Unable to load dynamic library
  3. PHP贷款等额本息、等额本金计算月供还款计划公式
  4. Laravel 关闭过滤排除部分路由VerifyCsrfToken 验证
  5. Laravel Horizon监控Redis队列queue
  6. Laravel 的任务调度计划任务的测试