2016-08-29 152 views
0

因此,我正在研究一個可以管理數據庫的小型Web應用程序。即時編輯活動數據庫

現在我可以使用下面的函數來檢索所有數據庫

DB::select('SHOW DATABASES') 

但是我現在希望能夠獲得表爲每個數據庫,並最終與這些數據庫做多,但我想如果我得到這個工作,這不會是一個問題。

通常情況下,你的配置中有不同的數據庫,但是因爲我希望我的應用程序可以與「任何」數據庫一起工作,並且確保我不必手動添加所有數據庫等,因爲這是我的工作類型希望我的網絡應用程序爲我完成。

我已經嘗試過繞過它而沒有成功例如。

DB:select('USE dbName; SHOW TABLES'); 
DB::select('SELECT dbName(); SHOW TABLES'); 

很明顯,這沒有奏效,但是有沒有「適當的」解決方案呢?我認爲即時編輯.env變量可能是一種選擇,但我似乎無法找到一種「合法」的方法來做到這一點。

回答

0

你不需要這個。

我認爲編輯在運行中.ENV變量可能已經是一個 選項,但我似乎無法找到一個「合法」的方式做,要麼。

你需要的是這個

DB::purge('mysql');//IMP 

Config::set('database.connections.mysql.host', $host); 
Config::set('database.connections.mysql.database', $database); 
Config::set('database.connections.mysql.username', $username); 
Config::set('database.connections.mysql.password', $password); 

你只需要找出一種方式來獲得的值$host$database$username,並$password動態。

要做到這一點的一種方法是有一個數據庫,它存儲所有這些值,並指向默認數據庫連接(說mysqlconfig/database.php)。然後從中讀取數據並相應地設置連接。

+0

我不確定是否足以重新分配配置值?如果數據庫管理器/連接已經初始化,並且具有原始配置值,該怎麼辦?您需要在bootstrap的某個地方執行此操作。 –

+0

當然,DB管理器已使用'.env'中的默認值初始化。無論你在哪裏使用該代碼,配置值都只針對該對象。假設你在'MyController'類中設置配置,那麼這個配置將特定於那個特定的'MyController'實例。系統的其餘部分將繼續使用默認連接。 – linuxartisan