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

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

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,如需转载请自行联系原作者
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
30天前
|
存储 算法 关系型数据库
(二十二)全解MySQL之分库分表后带来的“副作用”一站式解决方案!
上篇《分库分表的正确姿势》中已经将分库分表的方法论全面阐述清楚了,总体看下来用一个字形容,那就是爽!尤其是分库分表技术能够让数据存储层真正成为三高架构,但前面爽是爽了,接着一起来看看分库分表后产生一系列的后患问题,注意我这里的用词,是一系列而不是几个,也就是分库分表虽然好,但你要解决的问题是海量的。
|
2月前
|
开发框架 JavaScript 测试技术
nodejs使用eggjs创建项目,接入influxdb完成单表增删改查
nodejs使用eggjs创建项目,接入influxdb完成单表增删改查
57 0
|
30天前
|
关系型数据库 MySQL PHP
开发者必看:MySQL主从复制与Laravel读写分离的完美搭配
开发者必看:MySQL主从复制与Laravel读写分离的完美搭配
49 2
|
缓存 中间件 PHP
最为常用的Laravel操作(2)-路由
整理了 Laravel 框架路由最常用的操作,如路由参数、路由群组、中间件等。本系列共有 3 篇文章。
63 0
|
10月前
|
SQL Java 关系型数据库
模仿Activiti工作流自动建表机制,实现Springboot项目启动后自动创建多表关联的数据库与表的方案
在一些本地化项目开发当中,存在这样一种需求,即开发完成的项目,在第一次部署启动时,需能自行构建系统需要的数据库及其对应的数据库表。
64 1
|
9月前
|
小程序 关系型数据库 数据库连接
laravel5.8(十一)配置使用多数据库
有的时候,我们在开发的过程中需要连接多个数据库。 Laravel框架中早已为我们想到了这样的需求。 配置很简单。 在根目录下的/config/database.php文件中配置: Laravel中为我们提前预设了多种类型的数据库连接
45 0
|
存储 SQL 缓存
Laravel数据查询优化最佳实践
在 Laravel 中,数据库查询是一个常见的任务。为了提高查询的性能和可维护性,我们可以通过自定义查询构造器类来优化数据库查询。本文将详细解析使用 自定义ORM查询构造器类 `CacheBuilder` 和 改造 Laravel 中的 `DB` 类,以使用自定义的查询构造器类 `CacheBuilder` 缓存技巧来优化数据库查询。并详细解释每个方法的意义和改造的原因。
235 0
|
存储 JSON 数据处理
最为常用的Laravel操作(1)-Eloquent模型
整理了 Laravel 框架 Eloquent 模型最常用的操作,包括一些常用的属性、方法,模型关联等。本系列共有 3 篇文章。
67 2
|
SQL 开发框架 .NET
10分钟系列:NetCore3.1+EFCore三步快速完成数据库交互
10分钟系列:NetCore3.1+EFCore三步快速完成数据库交互
|
数据库
FastAPI 学习之路(三十四)数据库多表操作
FastAPI 学习之路(三十四)数据库多表操作
FastAPI 学习之路(三十四)数据库多表操作