Search by

luminee / switcher

Maintainers

Package info

github.com/Luminee/switcher

pkg:composer/luminee/switcher

Transparency log

Statistics

Installs: 13

Dependents: 0

Suggesters: 1

Stars: 0

Open Issues: 0

0.9.0.1 2025-05-21 02:22 UTC

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_devproject_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