2016-11-08 17 views
2

laravelでいくつかのデータベースを使用する必要があります。config/database.phpのconnections配列に新しいdb接続を追加するためのフォームを作成しようとしています。Laravel - 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', 'forge'), 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => true, 
     'engine' => null, 
    ], 

    'pgsql' => [ 
     'driver' => 'pgsql', 
     'host' => env('DB_HOST', 'localhost'), 
     'port' => env('DB_PORT', '5432'), 
     'database' => env('DB_DATABASE', 'forge'), 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'prefix' => '', 
     'schema' => 'public', 
     'sslmode' => 'prefer', 
    ], 

], 

おかげ

+0

このリンクはヘルプの[こちら](http://stackoverflow.com/questions/39198056/edit-active-database-on-the-fly/39198141#39198141) – linuxartisan

答えて

2

あなたのアレイに簡単に追加すると、多くのデータベース、あなたはあなたに接続値を追加し、その後必要とするファイルまたはそのような配列のvalyesに.env:

return array(

'default' => 'my_first_db', 

'connections' => array(

    # Our primary database connection 
    'my_first_db' => array(
     'driver' => 'mysql', 
     'host'  => 'host1', 
     'database' => 'database1', 
     'username' => 'user1', 
     'password' => 'pass1' 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
    ), 

    # Our secondary database connection 
    'my_second_db' => array(
     'driver' => 'mysql', 
     'host'  => 'host2', 
     'database' => 'database2', 
     'username' => 'user2', 
     'password' => 'pass2' 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
    ), 
), 

を) ;

Schema::connection('my_second_db')->create('a_new_table', function($table) 
{ 
    $table->increments('id'): 
}); 

$users = DB::connection('my_second_db')->select('users'); 

これはそれを行うセキュリティリスクのビットで、気をつけする必要があるだろう、あなたは上記と同様のテンプレートにデータをポストし、サーバーへの書き込みする必要がありますフォームを通じて接続を追加するにはあなたがやっていることややっていること、データベースデータをリクエストに投稿した後、単にデータベースデータをファイルに保存することは、少しばかりのことです。

PDOであらかじめ定義された10個のデータベースを持つ設定ファイルをセットアップして、設定を上書きしたり、設定が割り当てられていない設定ファイルの1つに保存したりできます。あなたがセッション中にパラメータを格納して、設定ファイルにそれらをデフォルト可能性が

config([ 
    'database.connections.mysql.database' => $dynamicDB, 
    'database.connections.mysql.username' => $dbUsername, 
    'database.connections.mysql.password' => $dbPassword, 
    // Any other dynamically set variables 
]); 

を:ミドルウェアでこれを行う

config([ 
    'database.connections.mysql.database' => session('db_database', config('database.connections.mysql.database')), 
    'database.connections.mysql.username' => session('db_username', config('database.connections.mysql.username')), 
    'database.connections.mysql.password' => session('db_password', config('database.connections.mysql.password')), 
    // Any other dynamically set variables 
]); 

+0

わかりました。手動でファイルに接続を追加する方がよいでしょう。 ログイン画面でこの接続をドロップダウンリストに表示できますか? アクセス・データを入れた後にそのユーザーが必要です。必要なデータベースを選択し、アプリケーションでこのデータベースを使用します。どうやってやるの? @Birdy – user3242861

+0

はい、あらかじめ定義された設定レイアウトを10個と言うことで、選択肢を数多く投入することができました。設定ファイルでは、値を変数として保存し、設定ファイル(Class)に渡してデータベースを動的に保存できますもう1つの選択肢は、各ユーザーまたは各設定のデータベース値を格納するデータベーステーブルを作成し、次にユーザーIDに応じてデータベースから接続値を取得するデータベース接続クラスを1つだけ持つことです。あなたは、あなたが望むユースケースを知らずに、例を提供したいですか? – Birdy

+0

はい、あなたが私に例を与えるなら、それは素晴らしいことです。私は何をしたいですか:私はいくつかのデータベース(クライアント)を持っていると私のアプリケーションのログインで私は使用するデータベースを選択する必要があり、ログイン後にアプリケーションは、選択したデータベースのデータを読み込みます。あなたは私のイデアを理解していますか? @Birdy – user3242861

1

あなたはコンフィグヘルパーを使用して動的に設定を設定することができますこれらのパラメータがどこで設定され、いつ使用されるかを少しずつ制御できます。

関連する問題