envor / laravel-managed-databases

此包已被废弃,不再维护。作者建议使用 envor/laravel-datastores 包代替。

一个用于在运行时使用Laravel工具管理多个数据库及其连接的小型包。

v1.1.4 2024-02-12 20:19 UTC

README

一个用于在运行时使用Laravel工具管理多个数据库及其连接的小型包

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

安装

您可以通过Composer安装此包。

composer require envor/laravel-managed-databases

使用方法

createDatabase()
runOnDatabase()
configureDatabase()

ManagedDatabases::createDatabase()

createDatabase() 方法将:

  • 缓存当前默认数据库连接配置
  • 将连接设置为 $managerConnection
  • 清除连接并重新连接
  • 创建物理数据库
  • 清除连接
  • 恢复原始默认连接
  • 清除并重新连接

提示

$managerConnection 必须存在并且是一个已配置的数据库连接。
此包创建了一些默认配置:manager_sqlitemanager_mysqlmanager_mariadb
它们通过克隆 sqlitemysqlmariadb 的默认配置来初始化内存。

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:runartisan 包装器,用于 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)。请参阅 许可文件 了解更多信息。