0
我正在构建一个使用多个数据库的系统。我目前有一个自定义配置文件,我正在使用它有一些控制。该文件不通过版本控制。如何在Laravel 5.4的database.php之外建立自定义连接
我想这些数据库是独立的混帐。我正在寻找建立一个自定义连接,而不使用config/database.php
我当然可以从git中删除config/database.php,但我想保持它整洁,并使用我的自定义配置文件。
这里是/ config文件夹中找到我的clientconfig.php
<?php
$clientDB = '';
if(isset($_SERVER['SERVER_NAME'])) {
$apiDomain = $_SERVER['SERVER_NAME'];
if ($apiDomain == 'www.example.com') {
$clientDB = 'clientdb_1';
}
}
return [
'client_db' => $clientDB
];
我想补充我的连接在该文件中也被发现在database.php中
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'example'),
'username' => env('DB_USERNAME', 'example'),
'password' => env('DB_PASSWORD', 'example'),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'clientdb_1' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => ('clientdb_1'),
'username' => env('DB_USERNAME', 'example'),
'password' => env('DB_PASSWORD', 'example'),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
是有一个干净的方式可以做到这一点?
编辑:我已经consired的.ENV文件,但它是太乱考虑到我可能有不同数量的数据库等。我仍然会将它们添加到database.php中这正是我想避免的。
我发现这一点,我相信我可以动态地设置这些值,如果发生这种情况,请回复并回答https://laracasts.com/讨论/渠道/雄辩/如何修改数据库连接字符串在laravel-5 – Adrian
可能重复[从当前数据库创建laravel多个mysql连接](https://stackoverflow.com/questions/42038674/ create-laravel-multiple-mysql-connection-from-current-database) –
是的,你可以使用配置动态设置数据库连接 –