首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带commit()命令的Laravel7.xDB事务自动提交

不带commit()命令的Laravel7.xDB事务自动提交
EN

Stack Overflow用户
提问于 2020-06-10 04:23:11
回答 1查看 1.3K关注 0票数 0

我有一个函数,它使用查询生成器向数据库插入记录。我想手动使用事务。

但是,记录被插入到数据库,而不调用commit()函数。我不知道为什么;我想要插入函数等待我,直到我调用commit()函数。

在我的脚本中有两个命令:

将command)

  • insert插入到products (将插入product_categories (无效命令)-我设置了字段prd_idd,而不是prd_id)

在这种情况下,当#2失败时,我希望命令#1不要插入数据库。

代码语言:javascript
复制
public function create($params)
{
    DB::beginTransaction();
    try {
        DB::table('products')->insert($params);
        DB::table('prd_categories')->insert(['prd_idd'=> 1, 'category_id' => 1]);
    } catch (\Exception $ex) {
        echo $ex->getMessage();
        DB::rollback();
    }
    die("End");
}
EN

回答 1

Stack Overflow用户

发布于 2020-06-10 04:46:18

要在数据库transaction中运行一组操作,可以在DB外观上使用事务方法。如果在事务Closure中抛出异常,事务将自动回滚。如果Closure成功执行,事务将自动提交。在使用transaction方法时,不需要担心手动回滚或提交:

代码语言:javascript
复制
DB::transaction(function () {
    DB::table('product')->insert(...);
    DB::table('prd_categories')->insert(...);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62295825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档