private function createDatabase($input, $output, $path_schema) { $fs = new Filesystem(); $dateTime = new \DateTime(); $output->write(PHP_EOL . " Actualizando la base de datos..." . PHP_EOL . PHP_EOL); if (!is_file($path_schema . '/schema.php')) { $output->writeln(" <error>ATENCION: El esquema no fue creado.</error>" . PHP_EOL); return; } $DriverManager = Service::get('database.manager')->getConnectionManager()->getConnection(); $sm = $DriverManager->getSchemaManager(); // Obtiene el esquema de la base de datos. $schema_current = $sm->createSchema(); // Se Obtiene el objeto del esquema creado. $schema = (include $path_schema . '/schema.php'); $comparator = new \Doctrine\DBAL\Schema\Comparator(); $schemaDiff = $comparator->compareSchemas($schema_current, $schema); $queries = $schemaDiff->toSql($DriverManager->getDatabasePlatform()); if (count($queries) == 0) { $output->writeln(PHP_EOL . " <info>No hay nada para actualizar.</info>"); return; } $_q = "set foreign_key_checks = 0;"; $DriverManager->query($_q); $output->writeln(PHP_EOL . " {$_q}" . PHP_EOL); foreach ($queries as $query) { $DriverManager->query($query); $output->writeln(" - {$query}"); } $_q = "set foreign_key_checks = 1;"; $output->writeln(PHP_EOL . " {$_q}" . PHP_EOL); $DriverManager->query($_q); $output->writeln("<info>La base de datos fue actualizada correctamente.</info>"); }