2016-05-14 18 views
0

私はLaravelを使用しており、データベース接続を使用してマルチテナントアプリケーションを作成しましたが、今はdatabase.phpの内容を自動的に作成する必要があります。選択された入力。 database.phpでの動的入力を使用してサーバーにPHPファイルを作成する方法

サンプル:だから

'connections' => [ 

    'db1' => [ 
     'driver' => 'mysql', 
     'host'  => env('DB_HOST', 'localhost'), 
     'database' => 'db1', 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
    ], 

    'db2' => [ 
     'driver' => 'mysql', 
     'host'  => env('DB_HOST', 'localhost'), 
     'database' => 'db2', 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => false, 
    ] 
] 

基本的に私は私の問題は、私は固定を持っていけないということである等のデータベース名、接続名、パスワード、のようなものを必要なフィールドを依頼するフォームを持っています接続の量は、1,2,4、w/eであり、file_put_contents()はデータの配列ではない文字列を必要とします。だから私の質問は、私のフォームからの入力でこのdatabase.phpファイルを作成し、開閉括弧と必要なものをすべて作成する方法です。角括弧と演算子を保持する文字列に配列を変換する関数はありますか?

どうすればこの問題を解決できますか?

+0

これを行わないでください。お願いします。はい、データから構造を解析するのに比べて効率的な解決策ですが、自己修正コードは本質的に**非常に危険です。 – symcbean

+0

こんにちは、それは安全に行うことができます、これは、別の無関係のアプリケーションのインスタンスを作成し、監視するプライベート管理アプリケーションになります。 –

答えて

0

あなたがその道を歩いている場合は、テンプレートファイルがあることを確認して、簡単に置き換えるプレースホルダを設定できます。

サンプルテンプレートファイルには、必要な情報ごとにすべての要件とプレースホルダが保持されます。

'db{index}' => [ 
      ...other key+values and it's placeholders... 
     ], 

そして単にすることができますあなたの最終database.phpファイルに何度もこのブロックのようにループと連結。


一方で、これを実行することができます。あなたを導くための抜粋です。

$nameKey = 'NameOfConnection'; 

$dataSync = AtlasBases::find($id_client); 

Config::set('database.connections.' . $nameKey, array(
     'driver' => 'mysql', 
     'host'  => $dataSync->site_db_server, 
     'database' => $dataSync->site_db_base, 
     'username' => $dataSync->site_db_user, 
     'password' => $dataSync->site_db_password, 
      'charset' => 'utf8', 
     'collation' => 'utf8_general_ci', 
     'prefix' => '', 
)); 
# And set the new connection to my models 

$imobModel = new ImobImoveis; 
$imobModel->setConnection($nameKey); 
+0

申し訳ありませんが、私のコードを実装した方法のために、私のアプリのための仕事でdoesntの仕事は、最も直接的な方法は、うまく動作するファイルを作成することですが、私は手動で作成し続けたい、テンプレートの方法とループの、おそらくリンクを提供する? –

関連する問題