luminee / switcher
0.9.0.1
2025-05-21 02:22 UTC
Requires
- php: >=8.0
- laravel/framework: >=9.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-08-24 06:09:52 UTC
README
Laravel 数据库连接切换包 —— 在闭包中临时切换默认数据库连接,执行完毕后自动恢复。
安装
composer require luminee/switcher
配置
发布配置文件:
php artisan vendor:publish --provider="Luminee\\Switcher\\SwitcherServiceProvider"
在 config/switcher.php 中定义额外连接:
return [ 'extra_connections' => [ // 简单连接 'mysql2' => [ 'driver' => 'mysql', 'host' => '127.0.0.1', // ... ], // 多层级连接:project_dev、project_prod 'project' => [ 'dev' => [ 'driver' => 'mysql', // ... ], 'prod' => [ 'driver' => 'mysql', // ... ], ], ], ];
多层级连接会自动展开为 project_dev、project_prod 等扁平名称。
使用
Facade
use Luminee\Switcher\Facades\Switcher; Switcher::run(function () { return User::all(); }, 'mysql2');
容器解析
app('switcher')->run(function () { return User::all(); }, 'project_dev');
与 Chariot 配合
Switcher 是 Chariot 的推荐依赖。安装后,Chariot 的 @connection 语法会使用 Switcher 切换连接,从而支持 extra_connections。未安装时 Chariot 使用原生 DB::setDefaultConnection() 作为 fallback。
License
MIT