Я работаю над созданием системы с использованием основной базы данных и нескольких баз данных арендаторов в laravel 5. У меня нет миграции базы данных и семена для основной базы данных, используя php artisan migrate:refresh --seed
.База данных арендаторов семян в Ларавеле 5
Арендаторы затем получают свою собственную базу данных при регистрации. Мне нужно запустить миграцию и семена в базе данных арендаторов.
Файлы миграции арендатора хранятся в отдельной папке. Трассы миграции (к сожалению, на основной базе данных) с помощью следующей команды
\Artisan::call('migrate', [
'--path' => "database/migrations_system"
);
Однако мне нужно миграции произойти на базе арендатора, скажем DB_1.
я прочитал следующее должно работать
\Artisan::call('migrate', [
'--path' => "database/migrations_system",
'--database' => 'db_1'
]);
Однако я в конечном итоге с ошибкой
InvalidArgumentException in DatabaseManager.php line 238:
базы данных [db_1] не настроен.
Stuck .... Как я могу указать миграцию для запуска в конкретной базе данных?
UPDATE:
Я обнаружил, что изменение config/database.php
и добавление db_1 получает меня мимо этой ошибки ....
'db_1' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => 'db_1',
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', 'pass'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'port' => '3306'
],
Однако это соединение неизвестно и должно быть сделано на лету, что Я также застрял на том, как достичь ....
UPDATE Снова и работает решение .... Изменить конфигурации на лету ...
$connections = \Config::get('database.connections');
$tenant_database = 'db_1'; //assign from your main database
$tenant_connection = [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => $tenant_database ,
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'port' => '3306'
];
$connections['tenant'] = $tenant_connection;
\Config::set('database.connections', $connections);
\Artisan::call('migrate', [
'--path' => "database/migrations_system",
'--database' => 'tenant'
]);
Так что, похоже, я ответил на свой вопрос, однако, возможно, некоторые могут прокомментировать эту процедуру.