2016-05-14 52 views
0

我正在使用Laravel並使用數據庫連接創建了多租戶應用程序,現在我需要能夠自動創建database.php的內容選擇輸入。如何使用動態輸入在服務器上創建PHP文件

樣品database.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, 
    ] 
] 

所以基本上我將有一個形式,將問這樣的數據庫名,連接名,密碼等這些必填字段我的問題是,我沒有一個固定的連接數量可能是一個,兩個,四個,w/e和file_put_contents()需要一個字符串而不是數據數組。所以我的問題是如何創建這個database.php文件與我的表單輸入,創建開幕和閉幕括號和一切需要?是否有一個函數可以將數組轉換爲保留括號和運算符的字符串?

我該如何做到這一點?

+0

不要這樣做。請。是的,與閱讀從數據解析結構相比,它是一種有效的解決方案,但自我修改代碼本質上是非常**非常危險的。 – symcbean

+0

嗨,它可以安全地做到這一點,這將是一個私人管理員應用程序,將創建和監視另一個無關的應用程序的實例。 –

回答

0

如果你想在這條路上走下去,確保你有一個模板文件,你可以設置你簡單替換的佔位符。

您的示例模板文件將包含您需要的每個信息的所有要求+佔位符。

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

,簡單地可以循環和CONCAT爲您的最終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

對不起,由於我實現代碼的方式,它不適用於我的應用程序,最直接的方法是創建可以正常工作的文件,但我不想繼續手動創建它,可以提供擴展示例的模板方式和循環,也許提供一個鏈接? –

相關問題