Laravel框架之事务使用及异常捕获

本文介绍了在Laravel中如何使用事务处理数据库操作,包括`transaction`方法的自动回滚和提交,以及如何手动开始和结束事务。通过示例展示了新增知识点并关联考点的过程,强调了在遇到`IlluminateDatabaseQueryException`异常时的处理。
摘要由CSDN通过智能技术生成

如果大家在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法。如果在事务的闭包内抛出异常,事务将会被自动还原。如果闭包运行成功,事务将被自动提交。
你不需要担心在使用 transaction 方法时还需要亲自去手动还原或提交事务:

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

手动操作事务
如果你想手动处理事务并对还原或提交操作进行完全控制,则可以在 DB facade 使用 beginTransaction 方法:

	DB::beginTransaction();
	你也可以通过 rollBack 方法来还原事务:
	
	DB::rollBack();
	最后,可以通过 commit 方法来提交这个事务:
	
	DB::commit();

注意: DB facade 的事务方法也可以用来控制 查询语句构造器 及 Eloquent ORM 的事务。
示例介绍
假设有要在数据库中存储一个知识点,这个知识点同时属于两个不同的考点,也就是考点和知识点这两个数据是多对多的关系,那么要实现这种数据结构就需要三个表:
知识点表 wiki:

	---------------------------------------
	id  title    content
	---------------------------------------
	考点表 tag:
	-------------------
	id
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值