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) –
是的,你可以使用配置動態設置數據庫連接 –