2017-02-06 8 views
0

新しいユーザーを作成できるアプリケーションがあります。新しいユーザーを作成した後、作成されたユーザーごとに個別のデータベースを作成する必要があります。ユーザアプリケーション。だから新しいデータベースを作成した後、私は新しいデータベースでユーザーの移行を実行することができません。動的データベースを作成して既存の移行を実行するlaravel

DB::statement('create database ' .$dbName); // with this I'm creating new db and after this I've some command like this: 
Artisan::call('migrate', ['--database' => $new_connection]);* 

データベースを作成していますが、このデータベースに移行が作成されていません。これで私を助けてください。

コード例:

if (DB::statement('create database ' . $dbName) == true) { 
    $new_connection = 'new'; 
    $nc = \Illuminate\Support\Facades\Config::set('database.connec‌​tions.' . $new_connect‌​ion, [ 
     'driver' => 'mysql', 
     'host'  => 'localhost', 
     'database' => $dbName, 
     'username' => 'root', 
     'password' => '', 
    ]); 
    Artisan::call('migrate', ['--database' => $nc]); 
} else { 
    return 'db already exists!'; 
} 
+0

なぜ関連するテーブルで 'user_id'を参照するのではなく、ユーザ固有のデータベースを作成したいのですか? –

+0

私はこのような機能を望んでいます https://laravel.io/forum/09-13-2014-create-new-database-and-tables-on-the-fly 私はそれぞれ別々のデータベースで実装していますユーザー。 – Chiru

+0

これを実現するには、複数のデータベースを用意する必要はありませんが、実際にはこれを実行するいくつかの問題が発生します。 IMOでは、テーブル間の関係を使用するほうがはるかに良いでしょう。私はこれをまったく意識しているわけではありませんが、データベース設計との「一対一」、「一対多」、「多対多」の関係について知っていますか? –

答えて

0

まず、Config::set()は何も返しません。

あなたのコードが動作している理由は、あなたの例では$new_connectionに格納されている接続の名前を渡さないためです。あなたがする職人コマンドだ

変更:

Artisan::call('migrate', ['--database' => $new_connection]); 

・ホープ、このことができます!

+0

これはあなたの質問に答えましたか? –

関連する問題