2017-02-06 7 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

Это ответ на ваш вопрос, @ Чиру? –