首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel DB类实现事务

事务 事务主要用于处理操作量大,较复杂的数据,如在某个场景你想删除某个用户,但又要删除这个用户相关的信息,这种操作就构造一个事务。...事务有四个特性 原子性 一致性 隔离性 持久性 原子性 一个事务的所有操作,要么全部完成,要么都不完成,如果在事务执行过程中发送错误则会回滚到事务开始前的状态。...注意:在MySQL中只有使用了InnoDB数据库引擎的数据表才能实现事务 DB类实现事务 通过transaction方法实现事务,该方法不需要你手动设置,回滚,事务提交。...当事务中发生错误时会自动抛出异常并回滚到事务执行之前的状态 DB::transaction(function(){ ...事务执行 }) 事务传参 由于事务中使用的是匿名函数,给匿名函数传参需按照下面格式...手动操作事务,控制事务回滚,事务提交 DB::beginTransaction():开启事务 DB::rollback():事务回滚 DB:commit():提交事务 如下简单示例 DB::

77110

Laravel5.1 框架数据库查询构建器用法实例详解

本文实例讲述了Laravel5.1 框架数据库查询构建器用法。分享给大家供大家参考,具体如下: 今儿个咱说说查询构建器。它比运行原生SQL要简单些,它的操作面儿也是比较广泛的。...共享锁可以避免被选择的行被修改直到事务提交: DB::table('articles')- where('id', ' ', 100)- sharedLock()- get(); 此外你还可以使用lockForUpdate...for update“锁避免选择行被其它共享锁修改或删除: DB::table('articles')- where('id', ' ', 100)- lockForUpdate()- get(); 更多关于...Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php...常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

3.5K41

laravel5 Eloquent 实现事务方式

1.官方手册是这样介绍的: 想要在一个数据库事务中运行一连串操作,可以使用DB门面的transaction方法,如果事务闭包中抛出异常,事务将会自动回滚。如果闭包执行成功,事务将会自动提交。...function () { DB::table('users')- update(['votes' = 1]); DB::table('posts')- delete(); }); 手动使用事务...如果你想要手动开始事务从而对回滚和提交有一个完整的控制,可以使用DB门面的beginTransaction方法: DB::beginTransaction(); 你可以通过rollBack方法回滚事务...: DB::rollBack(); 最后,你可以通过commit方法提交事务: DB::commit(); 注意:使用DB门面的事务方法还可以用于控制查询构建器和 Eloquent ORM 的事务。...(); }catch (\Exception $e) { //接收异常处理并回滚 DB::rollBack(); } 以上这篇laravel5 Eloquent 实现事务方式就是小编分享给大家的全部内容了

1.1K41

laravel Model 执行事务的实现

1.官方手册是这样介绍的: 想要在一个数据库事务中运行一连串操作,可以使用DB门面的transaction方法,如果事务闭包中抛出异常,事务将会自动回滚。如果闭包执行成功,事务将会自动提交。...如果你想要手动开始事务从而对回滚和提交有一个完整的控制,可以使用DB门面的beginTransaction方法: DB::beginTransaction(); 你可以通过rollBack方法回滚事务...: DB::rollBack(); 最后,你可以通过commit方法提交事务: DB::commit(); 注意:使用DB门面的事务方法还可以用于控制查询构建器和 Eloquent ORM 的事务。...如果你认为自增ID不应该被事务化,那么其他事务不得不等待着,检查自增ID是被使用还是被回滚,这就导致阻塞 因为innodb的auto_increament的计数器记录的当前值是保存在存内 存中的,并不是存在于磁盘上...所以就算 Rollback MySQL的auto_increament计数器也不会作负运算 解决办法:可以使用count() 等计数 方式 插入id (比较麻烦) 以上这篇laravel Model 执行事务的实现就是小编分享给大家的全部内容了

1.4K31

跟我一起学Laravel-数据库操作和查询构造器

查看日志记录 其它操作 在Laravel中执行数据库操作有两种方式,一种是使用\DB外观对象的静态方法直接执行sql查询,另外一种是使用Model类的静态方法(实际上也是Facade的实现,使用静态访问方式访问...DB::table('users')->where('votes', '>', 100)->sharedLock()->get(); 另外lockForUpdate方法可以避免其它的共享锁修改或者是选定...DB::table('users')->where('votes', '>', 100)->lockForUpdate()->get(); 事务处理 使用transaction方法的callback函数执行事务处理...如果需要手动管理事务,则使用如下函数 DB::beginTransaction(); DB::rollback(); DB::commit(); 使用DB类的静态方法启用的事务不仅对普通sql查询有效...); 这样不管什么操作都可以做了吧 另外含有两个方法,用于重新连接到指定数据库和断开连接 DB::reconnect('foo'); DB::disconnect('foo')d; ---- 参考: Laravel

6.3K30

Laravel如何使用数据库事务及捕获事务失败后的异常详解

前言 如果大家在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法。如果在事务的闭包内抛出异常,事务将会被自动还原。...如果闭包运行成功,事务将被自动提交。...方法: DB::beginTransaction(); 你也可以通过 rollBack 方法来还原事务: DB::rollBack(); 最后,可以通过 commit 方法来提交这个事务: DB::commit...(); 注意: DB facade 的事务方法也可以用来控制 查询语句构造器 及 Eloquent ORM 的事务。...Wiki数据,新增wiki成功后再把它关联到指定的考点上去 (在laravel中使用查询构建器或者Eloquent ORM执行query时,如果失败会返回 IlluminateDatabaseQueryException

1.6K30

Laravel中使用数据库事务以及捕获事务失败后的异常

Description 在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法。如果在事务的闭包内抛出异常,事务将会被自动还原。...如果闭包运行成功,事务将被自动提交。...(['votes' => 1]); DB::table('posts')->delete(); }); 手动操作事务 如果你想手动处理事务并对还原或提交操作进行完全控制,则可以在 DB facade...方法来提交这个事务: DB::commit(); 注意: DB facade 的事务方法也可以用来控制 查询语句构造器 及 Eloquent ORM 的事务。...Wiki数据,新增wiki成功后再把它关联到指定的考点上去 (在laravel中使用查询构建器或者Eloquent ORM执行query时,如果失败会返回 Illuminate\Database\QueryException

1.2K40

Laravel框架_php laravel框架

laravel框架 一、laravel简介 laravel是一套优雅简介的PHP开发框架,受欢迎程度非常之高,功能强大,工具齐全; https://www.jianshu.com/p/206592c78113...二、简单介绍 1、laravel是基于mvc模式的php框架,m——模型层,v——视图层,c——控制器层;以下为laravel框架的目录文件,框出来的文件目录将在后续中用到: 2、什么是MVC的开发思想...三、laravel目录结构整体分析 四、laravel路由 (一):简介 在laravel中,定义路由的地方在routes/web.php文件中。...在使用laravel前必须先定义路由,然后才能在浏览器中访问。routes文件夹中还有一个api.php,用于定义api路径。...laravel中请求类型包括:get、post、put、patch、delete。 1、基本路由 get请求: <?

3.6K20

Laravel,Yii,Thinkphp中学习php 操作数据库的事务嵌套

基础业务A模块就够用了,但是出现一些业务活动的时候,需要在A成功之后调用B模块,只有两个操作成功之后才完整提交事务。要实现这样的功能,无非两种方式: 1) 模块内部不加事务事务控制统一交给调用方。...因此底层还是需要支持事务嵌套。 嵌套事务的核心思想就是添加一个计数器,第一次开启事务,最后一次提交或回滚执行数据库操作,其他情况只是更新计数器数值。...分别看一看几个现有框架如何设计数据库事务嵌套操作: 1) Laravel Laravel事务相关操作封装在 Illuminate\Database\Concerns\ManagesTransactions...三个框架都是通过计数器以及数据库本身的"部分事务"支持嵌套事务的操作。MYSQL 中通过 savepoint 的方式来实现只提交事务的一部分。...2) 事务提交,检查计数器是否是最外层事务,是则执行pdo事务提交操作,否则计数器减1 3) 事务回滚,检查计算器是否是最外层操作,是则执行pdo事务回滚,否则计数器减1,同时根据是否支持部分事务,执行

1.2K40

Laravel系列8】走出 Laravel 的世界

走出 Laravel 的世界 还记得这个系列的第一篇文章是什么吗?当时我们写的是《进入Laravel的世界》。照理说,学习完了,日常应用更得心应手了,我们为啥又要走出呢?...学习这条路是没有尽头的,Laravel 的学习结束了,不少小伙伴应该也把它应用在日常业务开发中了。下一个起点又会是什么呢?...我们就直接去学习 Swoole 中的应用功能,以及一个和 Laravel 非常像的 Swoole 框架:Hyperf 。...Laravel 优雅吗 还记得我们一开始就说过这个问题,同时网上很多人也都会去说它是一个优雅的框架。经过这段时间的学习,我相信你也有了自己的答案。...你可以在这些框架中寻找到 Laravel 中许多实现的影子。如果你本身就是在用 Laravel ,去拓展一下眼界也没什么不好。不说谁抄谁,思想都是开源的,这点你必须承认。

1.2K30
领券