envor / laravel-managed-databases
一个用于在运行时使用Laravel工具管理多个数据库及其连接的小型包。
Requires
- php: ^8.2
- envor/laravel-schema-macros: ^1.1
- illuminate/contracts: ^11.0
- spatie/laravel-package-tools: ^1.16.2
Requires (Dev)
- larastan/larastan: *
- laravel/pint: *
- nunomaduro/collision: *
- orchestra/testbench: ^9.0
- pestphp/pest: ^2.33
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.2
- spatie/docker: ^1.12
This package is auto-updated.
Last update: 2024-07-08 10:00:31 UTC
README
一个用于在运行时使用Laravel工具管理多个数据库及其连接的小型包
安装
您可以通过Composer安装此包。
composer require envor/laravel-managed-databases
使用方法
createDatabase()
runOnDatabase()
configureDatabase()
ManagedDatabases::createDatabase()
createDatabase()
方法将:
- 缓存当前默认数据库连接配置
- 将连接设置为
$managerConnection
- 清除连接并重新连接
- 创建物理数据库
- 清除连接
- 恢复原始默认连接
- 清除并重新连接
提示
$managerConnection
必须存在并且是一个已配置的数据库连接。
此包创建了一些默认配置:manager_sqlite
、manager_mysql
和 manager_mariadb
。
它们通过克隆 sqlite
、mysql
和 mariadb
的默认配置来初始化内存。
use Envor\ManagedDatabases\ManagedDatabases; $managerConnection = 'manager_sqlite'; $name = 'database' ManagedDatabases::createDatabase($name, $managerConnection); // database
ManagedDatabases::runOnDatabase()
runOnDatabase()
方法将通过使用给定 $managerConnection
的凭据和选项创建的新连接连接给定的 $database
,执行给定的 $callback
,然后最后,恢复原始默认数据库连接。
- 缓存当前默认数据库连接配置
- 通过克隆
$managerConnection
配置为新数据库创建一个新的连接配置 - 将数据库设置为默认并连接到它
- 运行给定的回调
- 清除连接
- 恢复原始默认连接
- 清除并重新连接
use Envor\ManagedDatabases\ManagedDatabases; ManagedDatabases::runOnDatabase( $database = 'database', $callback = fn() => Artisan::call('migrate', ['--force' => true]), $managerConnection = 'manager_sqlite' );
该包还包括一个名为 managed-databases:run
的 artisan
包装器,用于 runOnDatabase()
方法。最简单且无害的检查方法是将其以下命令粘贴到您的终端中
php artisan managed-databases:run "migrate:fresh --seed" --database=":memory:" --managerConnection="sqlite"
这将无害地运行您的迁移和种子器,针对内存中的sqlite数据库。快速检查它们是否可以无错误运行的绝佳方法。
ManagedDatabases::configureDatabase()
configureDatabase()
方法将给定数据库设置为基于给定 $managerConnection
的新连接的默认数据库。
use Envor\ManagedDatabases\ManagedDatabases; ManagedDatabases::createDatabase('database2', 'sqlite'); ManagedDatabases::useDatabase('database2', 'sqlite'); config('database.default'); // database2 config('database.connections.database2') // [ // "driver" => "sqlite", // "url" => null, // "database" => "/home/forge/mysite.com/storage/app/managed_database2.sqlite", // "prefix" => "", // "foreign_key_constraints" => true, // ]
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全漏洞
请审查 我们的安全策略 了解如何报告安全漏洞。
鸣谢
许可
MIT许可(MIT)。请参阅 许可文件 了解更多信息。