SchemaUpdateCommand.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. /** @noinspection PhpUnused */
  3. namespace App\Commands\Doctrine;
  4. use App\Service\Utils\Path;
  5. use Doctrine\ORM\Tools\Console\Command\SchemaTool\UpdateCommand;
  6. use Doctrine\ORM\Tools\SchemaTool;
  7. use Symfony\Component\Console\Input\InputInterface;
  8. use Symfony\Component\Console\Output\OutputInterface;
  9. use Symfony\Component\Console\Style\SymfonyStyle;
  10. /**
  11. * Overrides the default doctrine:schema:update command.
  12. */
  13. class SchemaUpdateCommand extends UpdateCommand
  14. {
  15. protected function executeSchemaCommand(InputInterface $input, OutputInterface $output, SchemaTool $schemaTool, array $metadatas, SymfonyStyle $ui): int
  16. {
  17. $output->writeln('-- Executing pre-update scripts');
  18. // Lists schema extensions scripts in the '/sql/schema-extensions' dir
  19. $schemaExtensionsDir = Path::join(Path::getProjectDir(), 'sql', 'schema-extensions');
  20. $scripts = Path::list($schemaExtensionsDir, '*.sql');
  21. sort($scripts);
  22. // Execute those scripts in alphabetical order
  23. $em = $this->getEntityManager($input);
  24. $conn = $em->getConnection();
  25. foreach ($scripts as $script) {
  26. $sql = Path::read($script);
  27. $conn->executeQuery($sql);
  28. }
  29. $output->writeln(sprintf('-- Database successfully updated, %s scripts executed', count($scripts)));
  30. $output->writeln('<!> Operation interrupted: use the d:s:u command on the current version to update the DB tables');
  31. // parent::executeSchemaCommand($input, $output, $schemaTool, $metadatas, $ui);
  32. return 0;
  33. }
  34. }