【发布时间】:2017-12-31 07:53:57
【问题描述】:
我正在构建一个使用多个数据库的系统。我目前有一个我正在使用的自定义配置文件,其中包含一些控件。此文件未通过版本控制。
我希望这些数据库独立于 git。我希望在不使用 config/database.php 的情况下构建自定义连接
我当然可以从 git 中删除 config/database.php,但我想保持整洁并使用我的自定义配置文件。
这是我的 clientconfig.php,可以在 /config 文件夹中找到
<?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,
],
有没有一种干净的方法可以做到这一点?
编辑: 我已经考虑了 .env 文件,但考虑到我可能有不同数量的数据库等,它太混乱了。我仍然会将它们添加到 database.php 中,这是我正在尝试的避免。
【问题讨论】:
-
我找到了这个,我相信我可以动态设置值,如果是这样,我会报告并回答laracasts.com/discuss/channels/eloquent/…
-
是的,您可以使用配置动态设置数据库连接