laravel跨库事务

在laravel中实现事务回滚 之前做项目用到了事务回滚这个机制。我把代码贴出来多多交流给点意见,我用的是laravel 5.1bane版本的,public static function createDeal($to_status, $params, $new_balance, $update = true)     {         \DB::beginTransaction();         try { 阅读详情

Laravel 下的跨库事务操作是基于连接的 当执行 DB::beginTransaction(); 的时候 其实是和默认的数据库配置建立了连接 后面的操作 commit 或者 rollback 都是操作的这个默认数据库 如果在这中间操作了其他的数据库 对他是不生效的

解决方案

开始事务的时候就指定连接
同时 commit 和 rollback 都 指定连接

增加多数据库配置

在配置目录 config/database.php 文件中的 connections 数组下 增加多数据库连接配置

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => env('DB_PREFIX', ''),
    'strict' => true,
    'engine' => null,
],
//增加test数据库配置
'test' => [
    'driver' => 'mysql',
    'host' => env('DB_TEST_HOST', '127.0.0.1'),
    'port' => env('DB_TEST_PORT', '3306'),
    'database' => env('DB_TEST_DATABASE', 'forge'),
    'username' => env('DB_TEST_USERNAME', 'forge'),
    'password' => env('DB_TEST_PASSWORD', ''),
    'unix_socket' => env('DB_TEST_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => env('DB_TEST_PREFIX', ''),
    'strict' => true,
    'engine' => null,
],
给Model指定数据库连接

新建一个test数据库的连接基类

指定连接为上面配置的连接别名

use Illuminate\Database\Eloquent\Model;
class BaseModel extends Model
{
    protected $connection = "test";
}
跨库事务操作
try {
    //开启默认数据库的事务
    DB::beginTransaction();
    //开启test数据库的事务
    DB::connection('test')->beginTransaction();
    //中间各种数据库操作
    Table1::xxxxxx();
    Table2::xxxxxx();
    if (true) {
        //一起提交
        DB::commit();
        DB::connection('test')->commit();
    } else {
        //一起回滚
        DB::rollback();
        DB::connection('test')->rollback();
    }
} catch (\Exception $exception) {
    echo "catch some errors:".$exception->getMessage();
}

laravel5 事务的用法 事务用法:首先介绍laravel5中的2中使用方式。 事务用法说明: 1、第一种方式:事务闭包 use Illuminate\Support\Facades\DB;  DB::transaction(function () {     //这里面写逻辑 }); 2、第二种方式:常规方式 use Illuminate\Support\Facades\DB;  //开启事务 DB::beg... 阅读详情

相关推荐

laravel单数据库执行事务和多数据库执行事务

1.引入DB类 2.单数据库使用 3.多数据库

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1148

Laravel 8 数据库操作 >> 数据库事务

Laravel 8 数据库事务操作的例子

gary0309的博客 518

laravel 解决多库下的DB::transaction()事务失效问题

问题:最近使用laravel的DB::transaction()方法进行事务操作时,发现事务总是无效的。代码如下: DB::transaction(function () use ($uid, $roleId) { RoomUserRole::insert([ 'uid' => $uid, 'role_id' => $roleId, 'created_at' => LARAVEL_START, 'updated_at' => LARAVEL_START ]); RoomUserRoleLog::insert([ 'uid' => $uid, 'handle_ty

Laravel跨数据库事务的实现

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33733810的博客 1164

SuperPoint与SuperGlue的C++ TensorRT工程化实战:从理论到部署的完整指南

本文详细介绍了如何将SuperPoint和SuperGlue算法通过C++和TensorRT进行工程化部署,从模型准备、格式转换到TensorRT引擎构建和C++推理实现。通过性能优化技巧和实际应用案例,展示了在边缘设备上实现实时特征匹配的完整流程,显著提升处理速度与效率。

weixin_42537831的博客 160

蓄热式加热炉燃烧技术

蓄热式加热炉燃烧技术

weixin_37928884的博客 2733

Laravel/Lumen 多库多事务异常回滚失败解决

默认手动事务操作过程: # 开启事务 DB::beginTransaction(); // 模型业务 $_mA = new TestAModel(); try { $_mA->insertGetId([...]); // ...为实际需要插入的数据 }catch (\Exception $e){ // 失败/异常,回滚 DB::rollBack(); } // 提交数据操作 DB::commit(); 实际开发中,我们可能用到多库直接数据的操作,这时安装默认的方式会造成部分数据已经操作

无限循环 808

别再手动查日志了!用Dify+Zabbix打造你的专属运维“嘴替”(保姆级配置流程)

本文详细介绍了如何利用Dify平台与Zabbix监控系统集成,构建智能运维对话系统,实现自然语言交互的运维管理。通过保姆级配置流程,帮助运维工程师提升查询效率、降低学习成本,打造企业级智能运维解决方案。

weixin_27298377的博客 456

php 跨库操作 事物,laravel - 跨库事务

在平时工作中 很多时候会碰到 要求数据一致性的场景这个时候必不可少的 要应用到事务背景:朋友用laravel 在开发后台时发现开启事务后并没有生效在未经过commit() 数据依然存储到了数据库中查看文档,beginTransaction 不会自动提交最后他自己发现是跨库导致 在此做个记录1、laravel事务操作有两种可以选择1.1、自动 transaction 不需要担心回滚or提交示例:D...

weixin_29682503的博客 538

17【Protues单片机仿真】基于51单片机的太阳能智能谷物翻晒机器人

基于51单片机,避障,低于50CM报警,LED灯亮起,自动翻晒用光敏电阻,光照强度大,电机转动,相当于翻晒粮食,远程控制用按键代替,按下去电机就转动,相当于翻晒粮食,然后光照强度和超声波的距离都在LCD1602显示屏显示出来。

weixin_70360261的博客 1448

ThingsBoard教程(十六):RPC部件的使用

前言 各位读者好,截止目前,ThingsBoard系列文章已经做了十篇,分别是 ThingsBoard教程(一):ThingBoard介绍及安装 ThingsBoard教程(二):租户,租户配置,部件组模块的使用 ThingsBoard教程(三):系统设置模块的使用 ThingsBoard教程(四):规则链简介与操作 ThingsBoard教程(五):客户,资产管理 ThingsBoard教程(六):设备管理 ThingsBoard教程(七):模拟设备遥测 ThingsBoard教程(八):自定义UI T

知无涯 4577

lumen mysql 事务_简单几部搞定laravel/lumen跨库操作

1.跨库数据库配置在网站跟目录下的config文件中增加database.php作为数据库配置文件。配置如下://当前默认数据库'mysql'=>['driver'=>'mysql','host'=>env('DB_HOST','localhost'),'port'=>env('DB_PORT',3306),'database'=>env('D...

weixin_27943395的博客 697

国科大作业考试资料-人工智能原理与算法-2024新编-第十一次作业整理

1、有一位教授想知道学生是否睡眠充足。每天,教授观察学生在课堂 上是否睡觉,并观察他们是否有红眼。教授获得如下的领域知识: (1)没有观察数据时,学生睡眠充足的先验概率为0.7。 (2)给定学生前一天睡眠充足为条件,学生在晚上睡眠充足的概率是0.8;如果前一天睡眠不充足,则是0.3。 (3)如果学生睡眠充足,则红眼的概率是0.2,否则是0.7。 (4)如果学生睡眠充足,则在课堂上睡觉的概率是0.1,否则是0.3。 将这些信息形式化为一个动态贝叶斯网络,使教授可以使用这个网络从观察序列中进行滤波和预

MatsumotoChrikk 1055

简单几部搞定laravel/lumen跨库操作

1.跨库数据库配置 在网站跟目录下的config文件中增加database.php作为数据库配置文件。配置如下: //当前默认数据库 1 2 3 4 5 6 7 8 9 10 11 12 13 'mysql'=>[ 'driver'=>'mysql', 'host'...

weixin_33819479的博客 556

A2A 协议详解:Agent Card 的设计与实现

Agent Card 是 Agent2Agent (A2A) 协议中实现智能体发现与互操作性的核心组件。本文将深入剖析 Agent Card 的设计理念、关键字段及其在智能体生态系统中的作用。我们将通过详细的 JSON Schema 解析和 Python SDK 示例,帮助您理解如何精确地定义和发布智能体能力,为构建可发现、可协作的 AI 智能体奠定基础。当您使用a2a.Agent类初始化一个智能体时,SDK 会根据您提供的参数(nameversion等)自动构建内部的 Agent Card 表示。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1476

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

laravel-soft-cascade与查询构建器:事务处理与错误回滚最佳实践

在Laravel开发中,使用软删除(SoftDeletes)时如何确保级联操作的事务安全是开发者面临的重要挑战。laravel-soft-cascade作为一款专注于软删除级联处理的扩展包,提供了强大的事务管理与错误回滚机制,本文将深入探讨其最佳实践。 ## 为什么事务处理对级联操作至关重要 当执行级联删除或恢复操作时,系统需要处理多个模型间的关联关系。如果在操作过程中发生错误(如关联不存在、

gitblog_00710的博客 648

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Laravel事务管理终极指南】:从入门到精通DB::transaction的8个关键点

掌握Laravel 10数据库事务处理精髓,深入解析DB::transaction使用场景、嵌套事务、异常回滚与性能优化。涵盖实际开发中数据一致性保障方案,8大关键点全面覆盖事务管理核心技巧,值得收藏。

AlgoPerch的博客 772

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

分库分表适配难?资深架构师亲授PHP环境下10年沉淀的落地经验

解决PHP数据库扩展难题,资深架构师分享分库分表适配实战经验。涵盖高并发场景下的水平拆分、路由策略与全局ID生成方案,基于10年落地项目提炼核心方法,提升系统可扩展性与稳定性,值得收藏。

GatherTide的博客 590

【高并发系统架构必修课】:PHP分库分表与数据迁移最佳实践

解决高并发下数据库性能瓶颈,深入讲解PHP分库分表与数据迁移最佳实践。涵盖水平拆分、路由策略、双写同步等核心方法,适用于电商、社交等大数据场景,保障系统稳定与数据一致性,值得收藏。

LogicPlex的博客 771

【PHP分库分表实战指南】:从零掌握高并发架构设计核心技术

掌握高并发场景下数据库性能瓶颈的解决方案,深入解析PHP分库分表读写分离的实现原理与实战技巧。涵盖适用场景、分片策略、主从同步配置及读负载均衡,提升系统承载力与响应速度,架构优化必看,值得收藏。

QuickCode的博客 359

Laravel 中使用事务

1、transaction 方法 DB::transaction(function () { DB::table('users')->update(['id' => 1]); DB::table('posts')->delete(); }); 2、手动提交 DB::beginTransaction(); 你也可以通过 rollBack 方法来还原事务: DB::rollBack(); 最后,可以通过 commit 方法来提交这个事务: DB::commit();

笔记 1万+

laravel mysql事务无效_laravel 解决多库下的DB::transaction()事务失效问题

问题:最近使用laravel的DB::transaction()方法进行事务操作时,发现事务总是无效的。代码如下:DB::transaction(function () use ($uid, $roleId) {RoomUserRole::insert(['uid' => $uid,'role_id' => $roleId,'created_at' => LARAVEL_STAR...

weixin_30611227的博客 579
上一篇: 链表反转
lazy-ants
博客等级 码龄10年 1粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值