2016-04-28 168 views
1

有沒有什麼辦法可以用Laravel CodeBehind創建新的數據庫?我的意思是,我無法使用php artisan或類似的東西。僅僅因爲我想爲每個註冊用戶創建一個數據庫。之後,我可以使用migration。 我正在使用Laravel 5.2。 感謝您的支持。如何使用Laravel創建新的空數據庫模型

+0

好,所以,對於每一個用戶,你要爲它創建一個數據庫? –

+0

是的,我有商店註冊用戶的一般數據庫。但我需要爲每個用戶提供新的數據庫。 –

+0

這種解決方案被稱爲「多租戶」,這裏是描述它的一篇文章[多租戶數據架構](https://msdn.microsoft.com/en-us/library/aa479086.aspx) – UselesssCat

回答

1

好吧,你可以爲每個bd執行一次數據庫查詢,而不是使用mysql或者你的sgbd數據庫創建命令,例如;

DB::getConnection()->statement('CREATE DATABASE :schema', array('schema' => "dasdsdasdsadsadsa")) 

它可能會與你想要的。

+0

是的,它很簡單並解決了我的問題。感謝你和每個人回答或評論我的問題。 –

+0

歡迎你。玩的很開心。 –

0

您可以run artisan commands from code

Artisan::call('migrate'); 

運行作曲家命令(你需要它來註冊遷移),使用PHP shell_exec

shell_exec('composer dumpauto'); 
+0

我會試試這個,但不是現在。 –

0

可以使用DB門面像這樣(提供的SQL用戶具有創建數據庫權利這樣做):

DB::statement('CREATE DATABASE myNewDB'); 

但我促請你重新考慮你的數據結構 - 其爲每個用戶一個單獨的數據庫很可能不是正確的解決方案是什麼您遇到的任何問題都可能造成更多問題,而不是解決問題。

+0

感謝您的建議,我同意你的觀點,這有點複雜。但是我們必須爲每個用戶創建數據庫。其實用戶不是用戶。用戶是一家公司。所以公司有很多數據。我無法將它們保存在一個數據庫中。順便說一下,這是一個問題。我是laravel的新手。我將在哪裏運行此代碼。它將控制器或模型? –

+0

這由你來決定。一般來說,你不會想把太多的邏輯放入laravel控制器中,因爲控制器中的代碼不能以一種很好的方式被重用,但是如果這種數據庫創建只發生在一個地方,那麼你就可以避開它。否則,我會嘗試使用面向對象的方法,並將數據庫創建作爲適當實體模型中的方法,如$ company-> createDatabase() –

0

您可以通過將DBNAME這樣

public function index() { 
    $userName = 'bigboytr'; // Your Database name to be created 
    DB::statement("CREATE DATABASE $userName"); 
} 

警告創建從控制器多達數據庫:

你並不需要爲每個用戶創建一個數據庫,它將使系統非常複雜。 。恩,如果你有成千上萬的用戶在某些情況下,則移動用戶的信息,以註冊用戶「一般」的數據庫將是非常艱難

建議:

什麼,我建議你把它創建爲未註冊的用戶提供新表格,以便您可以將它們移動到註冊用戶的表格,這將使您的過程變得輕鬆。

提示:

您可以在一些表進行比對數據庫引擎,並選擇最適合你的比賽像this

相關問題