У меня есть приложение, в котором администратор может создавать новых пользователей, а после создания нового пользователя я хочу создать отдельные базы данных для каждого созданного пользователя, и у меня есть некоторые миграции (таблицы) в пользовательское приложение. Итак, после создания новой базы данных я не могу запустить миграцию пользователей в новую базу данных.Создать динамическую базу данных и выполнить существующие миграции 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.connections.' . $new_connection, [
'driver' => 'mysql',
'host' => 'localhost',
'database' => $dbName,
'username' => 'root',
'password' => '',
]);
Artisan::call('migrate', ['--database' => $nc]);
} else {
return 'db already exists!';
}
Почему вы хотите создавать пользовательские базы данных, а не просто ссылаться на 'user_id' на связанные таблицы? –
Я хочу такую функциональность https://laravel.io/forum/09-13-2014-create-new-database-and-tables-on-the-fly Так что я реализую отдельную базу данных для каждого пользователь. – Chiru
Чтобы достичь этого, вам не нужно иметь несколько баз данных, на самом деле вы, вероятно, столкнетесь с несколькими проблемами, делающими это! IMO, вам будет намного лучше использовать отношения между вашими таблицами. Я не говорю, что это вообще снисходительно, но вы знаете об отношениях «один-к-одному», «один-ко-многим» и/или «многим-ко-многим» с дизайном базы данных. –