2017-07-25 21 views
0

私は複数のデータベースを使用するシステムを構築しています。私は現在、私はそれにいくつかのコントロールを使用しているカスタム設定ファイルがあります。このファイルはバージョン管理されていません。Laravel 5.4でdatabase.php以外のカスタム接続を構築する方法

私はこれらのデータベースをgitに依存しないものにしたいと思います。私はconfig/database.phpを使用せずにカスタム接続を構築しようとしています

私はもちろんgitからconfig/database.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 

]; 

に記載されていて私のclientconfig.phpある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, 
    ], 

されていますで発見されていますこれを行うことができるきれいな方法がありますか?

EDIT:私は.envファイルをconsiredしているが、それは私が、私はまだ私が避けるようにしようとしています何であるdatabase.phpでそれらを追加していく予定データベースなどの異なる量を有していてもよく考えると、あまりにも乱雑です。

+0

私はこれを見つけました。値を動的に設定でき、悪い報告があった場合は回答してもいいと思います。https://laracasts.com/議論/チャンネル/雄弁/方法 - データベース接続 - 文字列 - laravel - 5 – Adrian

+1

[現在のデータベースから複数のmysql接続を作成する]の可能な複製(https://stackoverflow.com/questions/42038674/)現在のデータベースから複数のmysql接続を作成する) –

+0

はい、configを使用してデータベース接続を動的に設定できます –

答えて

0

config()を使用して、自分の新しい接続をそのファイルに追加できました。

if ($apiDomain == 'www.example.com') { 

    $appUrl = $apiDomain; 
    $clientDB = 'clientdb_1'; 

    config(['database.connections.clientdb_1' => array(
     'driver' => 'mysql', 
     'host' => env('DB_HOST', 'localhost'), 
     'port' => env('DB_PORT', '3306'), 
     'database' => $clientDB, 
     'username' => 'example', 
     'password' => 'example', 
     'charset' => 'utf8mb4', 
     'collation' => 'utf8mb4_unicode_ci', 
     'prefix' => '', 
     'strict' => true, 
     'engine' => null, 

    )]); 
} 

NB:私のカスタム設定ファイルを database.phpで後をロードされた場合を除きこれは動作しませんでした。アルファベット順でファイル名をz_clientconfig.phpに変更する必要がありました。

関連する問題