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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

1.跨库数据库配置 

        在网站跟目录下的config文件中增加database.php作为数据库配置文件。配置如下:

    //当前默认数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
'mysql'  => [
     'driver'  =>  'mysql' ,
     'host'  => env( 'DB_HOST' 'localhost' ),
     'port'  => env( 'DB_PORT' , 3306),
     'database'  => env( 'DB_DATABASE' 'forge' ),
     'username'  => env( 'DB_USERNAME' 'forge' ),
     'password'  => env( 'DB_PASSWORD' '' ),
     'charset'  => env( 'DB_CHARSET' 'utf8' ),
     'collation'  => env( 'DB_COLLATION' 'utf8_unicode_ci' ),
     'prefix'  => env( 'DB_PREFIX' '' ),
     'timezone'  => env( 'DB_TIMEZONE' '+00:00' ),
     'strict'  => env( 'DB_STRICT_MODE' , false),
],
1
----------------------------------重磅内容来袭----------------------------------------------------

//增加其他库

1
2
3
4
5
6
7
8
9
10
11
12
13
'xd_db'  => [
     'driver'  =>  'mysql' ,
     'host'  => env( 'XD_DB_HOST' 'localhost' ),
     'port'  => env( 'XD_DB_PORT' , 3306),
     'database'  => env( 'XD_DB_DATABASE' 'forge' ),
     'username'  => env( 'XD_DB_USERNAME' 'forge' ),
     'password'  => env( 'XD_DB_PASSWORD' '' ),
     'charset'  => env( 'XD_DB_CHARSET' 'utf8' ),
     'collation'  => env( 'XD_DB_COLLATION' 'utf8_unicode_ci' ),
     'prefix'  => env( 'XD_DB_PREFIX' '' ),
     'timezone'  => env( 'XD_DB_TIMEZONE' '+00:00' ),
     'strict'  => env( 'XD_DB_STRICT_MODE' , false),
],


2.跨库Model操作

     只需要在model中增加下面语句即可,使用Model方式照旧:
    protected $connection='xd_db';//指定数据库

    

代码演示

1
2
3
4
5
6
7
8
9
10
11
12
class  Customer  extends  Model
{
     protected  $connection = "xd_db" ; //指定数据库
     protected  $table  "customer" ;
     public  $timestamps  = false;
     
     ....
}
 
 
使用Model方式不发生任何变化。
Customer::where(...);

    


3.跨库DB原生操作

DB后面通过增加connection()方法指定要连接的数据库。

注意:常见的DB操作的默认指定的数据库配置标示名为database.php中的‘mysql’。

1
2
3
DB::where( '...' )
等同于
DB::connection( 'mysql' )->where();


同理,只需要指定需要连接的数据库的配置标示名即可实现跨库操作。

1
DB::connection( 'xd_db' )->where();



4.跨库事务

默认事务操作范例:

1
2
3
4
5
6
7
8
9
10
11
try  {
     DB::beginTransaction();
     
     ....业务操作....
     
     
     DB::commit();
} catch (\Exception  $e ){
     DB::rollback();
     throw  $e ;
}


跨库事务

1
2
3
4
5
6
7
8
9
10
11
try  {
     DB::connection( 'xd_db' )->beginTransaction();
     
     ....业务操作....
     
     
     DB::::connection( 'xd_db' )->commit();
} catch (\Exception  $e ){
     DB::::connection( 'xd_db' )->rollback();
     throw  $e ;
}


至此,关于laravel/lulem的所有有关跨库的操作均给出了具体操作方案。欢迎提出意见!










本文转自 hgditren 51CTO博客,原文链接:http://blog.51cto.com/phpme/2068561,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
余二五
+关注
目录
打赏
0
0
0
0
235
分享
相关文章
(二十二)全解MySQL之分库分表后带来的“副作用”一站式解决方案!
上篇《分库分表的正确姿势》中已经将分库分表的方法论全面阐述清楚了,总体看下来用一个字形容,那就是爽!尤其是分库分表技术能够让数据存储层真正成为三高架构,但前面爽是爽了,接着一起来看看分库分表后产生一系列的后患问题,注意我这里的用词,是一系列而不是几个,也就是分库分表虽然好,但你要解决的问题是海量的。
688 3
揭秘Ruby数据库交互的黑科技!ActiveRecord模式:为何它让数据库操作如此“随心所欲”?
【8月更文挑战第31天】在Ruby编程中,与数据库交互至关重要。ActiveRecord作为Ruby on Rails框架的核心组件,凭借其简洁高效的特点,成为处理数据库操作的首选。本文深入探讨ActiveRecord模式,介绍其如何简化数据库交互,并通过示例代码展示具体应用。ActiveRecord是一种ORM框架,将数据库表映射为Ruby类,使开发者能通过操作对象间接管理数据库记录。其核心特性包括模型定义、关联管理、数据验证、事务处理及强大的查询接口。通过示例代码,展示了如何定义模型、创建记录、查询记录及处理关联,突显了ActiveRecord在简化数据库操作方面的优势。
167 0
Django入门到放弃之ORM多表操作
Django入门到放弃之ORM多表操作
❤Nodejs 第七章(操作本地数据库高并发createPool方式)
【4月更文挑战第7天】本文介绍了如何使用Node.js操作本地数据库接口的优化,将之前的单次连接(createConnection)替换为支持高并发的连接池(createPool)。主要改动包括:查询、新增用户、获取用户详情、更新和删除用户的方法,都改用`connectionpool.query()`。这样改进能提升效率,适应更多并发请求。代码示例展示了如何在路由处理函数中使用连接池进行数据库操作。
237 6
❤Nodejs 第七章(操作本地数据库高并发createPool方式)
❤Nodejs 第五章(操作本地数据库优化和处理)
【4月更文挑战第5天】本文介绍了在Node.js中操作本地数据库的优化和处理方法。首先展示了如何优化用户查询接口,根据用户条件查询用户列表。通过设置查询参数并使用axios发送GET请求,结合Express框架从`req.query`获取参数,实现动态SQL查询。接着,文章演示了根据用户ID查询用户详细信息,指出使用`req.params`而非`req.query`来获取URL路径中的动态ID。
98 5
Flask数据库操作实战:增删改查一网打尽
【4月更文挑战第15天】本文介绍了在Flask中进行数据库操作的方法,包括选择数据库扩展(如Flask-SQLAlchemy)、配置数据库、定义模型以及执行CRUD操作。通过Flask-SQLAlchemy的ORM功能,开发者可以方便地管理数据库表和记录。文章详细展示了如何创建模型、添加、查询、更新和删除数据,并提到了高级查询和关系映射。此外,还提及了数据库迁移工具Flask-Migrate以及性能优化和安全性问题。了解这些基础,有助于开发者构建高效、安全的Flask Web应用。
Laravel数据查询优化最佳实践
在 Laravel 中,数据库查询是一个常见的任务。为了提高查询的性能和可维护性,我们可以通过自定义查询构造器类来优化数据库查询。本文将详细解析使用 自定义ORM查询构造器类 `CacheBuilder` 和 改造 Laravel 中的 `DB` 类,以使用自定义的查询构造器类 `CacheBuilder` 缓存技巧来优化数据库查询。并详细解释每个方法的意义和改造的原因。
332 0
最为常用的Laravel操作(1)-Eloquent模型
整理了 Laravel 框架 Eloquent 模型最常用的操作,包括一些常用的属性、方法,模型关联等。本系列共有 3 篇文章。
97 2