2016-04-28 13 views
1

Laravel CodeBehindで新しいデータベースを作成する方法はありますか?つまり、私はphp artisanなどを使用することができません。登録したユーザーごとにデータベースを作成したいからです。その後、migrationを使用できます。 私はLaravel 5.2を使用しています。 ご支援いただきありがとうございます。モデル上のLaravelで新しい空データベースを作成する方法

+0

のようなあなたの試合のための最高の選択、そうすることができますか? –

+0

はい、登録されたユーザーをストアするための一般的なデータベースがあります。しかし、私はすべてのユーザーに新しいdbが必要です。 –

+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

あなたのアドバイスありがとう、私はあなたに同意する、それは少し複雑です。しかし、すべてのユーザーにDBを作成する必要があります。実際にはユーザーはユーザーではありません。ユーザーは会社です。だから、企業は多くのデータを持っている。私は1つのDBにそれらを保持することはできません。ところで、それは質問です。私はlaravelの初心者です。どこでこのコードを実行しますか。それはコントローラかモデルですか? –

+0

あなたには決まります。コントローラ内のコードをうまく再利用することはできないため、一般的にlaravelコントローラにはあまりにも多くのロジックを入れたくありませんが、このデータベースの作成が1か所でしか行われないと、それを取り除くことができます。さもなければ、私はオブジェクト指向のアプローチに行き、$ company-> createDatabase()などの適切なエンティティモデルのメソッドとしてデータベース作成を行います。 –

0

あなたはこの

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

警告のようなDBNAMEを渡すことにより、コントローラからできるだけ多くのデータベースを作成することができます:あなたはそれを作るだろうとユーザーごとに1つのデータベースを作成する必要はありません

システムは非常に複雑です。 。

私はあなたそれを作成することをお勧め何を:あなたは、いくつかのケースでは、ユーザーの数千を持っている場合はexは、その後、登録ユーザー「一般」のデータベースにユーザーの情報を移動する

勧告非常に厳しいだろう登録されていないユーザーのために新しいテーブルを作成し、登録されたユーザーのテーブルに移動することができます。これにより、プロセスが簡単になります。

ヒント:

あなたは、いくつかのテーブル内の各ユーザーのために、あなたはそれのためのデータベースを作成したい、データベースエンジンを比較してもthis

関連する問題