Laravel 5.5中如何使用Eloquent事务?调用DB::transaction报错不存在
解决Laravel 5.5中DB::transaction方法不存在的问题
嘿,这个报错我之前帮朋友排查过类似的,咱们一步步来搞定它:
首先检查DB门面是否正确引入
在你写这段代码的文件顶部,必须确保引入了Laravel的DB门面,否则PHP会找不到这个类的方法。添加这行代码:use Illuminate\Support\Facades\DB;要是没引入,PHP可能会把
DB当成一个普通类,自然找不到transaction方法。检查门面名称的大小写
Laravel的门面名称是严格区分大小写的,必须写成DB::transaction(),别写成Db::或者db::,小写的话肯定会报错。尝试手动事务写法替代闭包方式
有时候闭包形式的事务可能因为环境或者代码上下文的小问题出状况,你可以换成手动开启/提交事务的写法,在Laravel 5.5里完全支持:// 开启事务 DB::beginTransaction(); try { $project = Project::find($id); $project->users()->detach(); $project->delete(); // 提交事务 DB::commit(); } catch (\Exception $e) { // 出错回滚事务 DB::rollBack(); // 这里可以根据需求处理异常,比如记录日志或者返回错误提示 throw $e; }这种写法还能让你更灵活地处理异常情况。
确认Laravel版本确实是5.5
虽然你说用的是5.5,但可以通过终端执行php artisan --version确认一下实际版本。毕竟DB::transaction()从Laravel 4.2就已经支持了,5.5肯定是没问题的,但如果版本不对的话也可能出问题。
内容的提问来源于stack exchange,提问作者Tiến Nguyễn Văn
相关产品推荐
相关产品推荐

