Laravel中如何连接多个数据库_Laravel配置多数据库连接切换【教程】
发布时间 - 2026-01-23 00:00:00 点击率:次Laravel多数据库需显式指定连接而非自动切换:在config/database.php定义命名连接,在模型设$connection属性,或用DB::connection()临时切换;迁移、通知等内部组件仍依赖默认连接。
Laravel 默认支持多数据库连接,但“配置好就能自动切换”是常见误解——连接定义只是第一步,真正关键的是在模型、查询构造器或 DB 门面中显式指定连接,否则仍走默认连接。
如何在 config/database.php 中定义多个数据库连接
每个连接需有唯一名称,并明确驱动、主机、库名等。Laravel 不会自动识别“主从”或“读写分离”,必须手动命名并引用。
-
mysql是默认连接名,不要覆盖它;新增连接建议用语义化名称,如mysql_analytics、pgsql_reporting - 不同驱动(如
mysql和pgsql)可共存,但需确保对应扩展已启用(如pdo_pgsql) -
环境变量应通过
env()拉取,避免硬编码:'host' => env('DB_ANALYTICS_HOST', '127.0.0.1')
return [
'connections' => [
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
// ... 其他默认配置
],
'mysql_analytics' => [
'driver' => 'mysql',
'host' => env('DB_ANALYTICS_HOST'),
'database' => env('DB_ANALYTICS_DATABASE'),
'username' => env('DB_ANALYTICS_USERNAME'),
'password' => env('DB_ANALYTICS_PASSWORD'),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
],
],
];
如何在 Eloquent 模型中绑定特定数据库连接
模型默认使用 config('database.default') 对应的连接。要绑定到其他连接,必须设置 $connection 属性。
- 该属性值必须与
config/database.php中connections下的键名完全一致(如mysql_analytics) - 不支持运行时动态改写该属性来“切换”——它是类属性,修改只对当前实例生效,且易被后续查询覆盖
- 若一个模型需偶尔查另一个库,优先用
on('connection_name'),而非改$connection
class AnalyticsEvent extends Model
{
protected $connection = 'mysql_analytics';
protected $table = 'events';
}
如何在查询构造器或 DB 门面中临时切换连接
这是最灵活的方式,适用于单次查询、事务或按业务逻辑分流场景。注意:DB::connection() 返回的是新连接实例,不是全局切换。
- 使用
DB::connection('mysql_analytics')->table(...)可直接查指定库 - 事务必须在同一个连接实例上调用
beginTransaction()和commit(),跨连接事务无效 - 避免在循环中反复调用
DB::connection()——连接实例可复用,重复获取无必要
// 查 analytics 库的统计
$stats = DB::connection('mysql_analytics')
->table('daily_summary')
->where('date', '>=', '2025-01-01')
->get();
// 跨库关联?不行。Laravel 不支持 JOIN 多连接,得用应用层合并或视图
容易被忽略的关键点
多连接本身不增加复杂度,但以下三点常导致线上问题:
- 迁移文件默认只作用于
default连接,执行php artisan migrate --database=mysql_analytics才能指定目标 - 数据库通知(
Notifiable)、缓存表、Session 表等 Laravel 内部组件,都依赖默认连接,不会自动适配你新增的连接 - 连接名拼错(比如配置里是
mysql_report,代码里写成mysql_reports)会静默 f
allback 到默认连接,查错时极难发现
# mysql
# php
# word
# laravel
# 编码
# session
# ai
# 环境变量
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
如何在不使用负向后查找的情况下匹配特定条件前的换行符
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
手机软键盘弹出时影响布局的解决方法
独立制作一个网站多少钱,建立网站需要花多少钱?
Python3.6正式版新特性预览
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
英语简历制作免费网站推荐,如何将简历翻译成英文?
php 三元运算符实例详细介绍
黑客如何通过漏洞一步步攻陷网站服务器?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
如何基于PHP生成高效IDC网络公司建站源码?
香港服务器如何优化才能显著提升网站加载速度?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
jQuery 常见小例汇总
企业网站制作这些问题要关注
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
网站建设要注意的标准 促进网站用户好感度!
Laravel如何实现数据库事务?(DB Facade示例)
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Windows Hello人脸识别突然无法使用
北京企业网站设计制作公司,北京铁路集团官方网站?
再谈Python中的字符串与字符编码(推荐)
使用spring连接及操作mongodb3.0实例
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
网站图片在线制作软件,怎么在图片上做链接?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
PHP 500报错的快速解决方法
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
bing浏览器学术搜索入口_bing学术文献检索地址
济南网站建设制作公司,室内设计网站一般都有哪些功能?
昵图网官网入口 昵图网素材平台官方入口
如何快速建站并高效导出源代码?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
Java解压缩zip - 解压缩多个文件或文件夹实例
Laravel定时任务怎么设置_Laravel Crontab调度器配置
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
Android滚轮选择时间控件使用详解
Laravel怎么判断请求类型_Laravel Request isMethod用法
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
如何快速上传自定义模板至建站之星?
Laravel如何使用Telescope进行调试?(安装和使用教程)
开心动漫网站制作软件下载,十分开心动画为何停播?
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?


