У меня есть проект управляющего учреждения.Каждое учебное заведение имеет свою собственную базу данных, например « institu_1 », « institu_2 » и т. Д. Я создаю базу данных этого учреждения и пытаюсь перейти на нее после того, как я ее создал.Поскольку миграция занимает много времени (я думаю, что у нее много таблиц) Я использую очередь и задания.Задание выполняется, но не выполняется миграция !!
* Контроллер: *
$newDb = DB::connection('rc')->statement("CREATE DATABASE intitution_$institutionId CHARACTER SET utf8 COLLATE utf8_general_ci;");
DB::connection('rc')->statement("GRANT ALL PRIVILEGES ON `institution\\_$institutionId`.* TO 'institutions'@'%' WITH GRANT OPTION");
if ($newDb) {
Config::set('database.connections.th', [
'driver' => 'mysql',
'host' => 'localhost',
'port' => '3306',
'database' => 'institution_'.$institutionId,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'timezone' => '+00:00',
'strict' => false,
]);
$job = (new CreateInstitutionDb())->delay(Carbon::now()->addSecond(120));
dispatch($job);
return true;
}
* Задание CreateInstitutionDb: *
public function handle()
{
\Illuminate\Support\Facades\Artisan::call('migrate',['--database' => 'th', '--force' => true]);
}