migrations/Version20251117150000.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\DBAL\Types\Types;
  6. use Doctrine\Migrations\AbstractMigration;
  7. final class Version20251117150000 extends AbstractMigration
  8. {
  9.     public function getDescription(): string
  10.     {
  11.         return 'Adds mycmcm_request_category tables with hierarchical structure and document requirements';
  12.     }
  13.     public function up(Schema $schema): void
  14.     {
  15.         $this->skipIf(
  16.             true === $schema->hasTable('mycmcm_request_category'),
  17.             'The mycmcm_request_category table was already created!'
  18.         );
  19.         // Create mycmcm_request_category table
  20.         $table $schema->createTable('mycmcm_request_category');
  21.         $table->addColumn('id'Types::GUID)->setNotnull(true);
  22.         $table->addColumn('icon'Types::STRING, ['length' => 80])->setNotnull(false);
  23.         $table->addColumn('parent_id'Types::GUID)->setNotnull(false);
  24.         $table->setPrimaryKey(['id']);
  25.         $table->addForeignKeyConstraint(
  26.             'mycmcm_request_category',
  27.             ['parent_id'],
  28.             ['id'],
  29.             ['onDelete' => 'CASCADE'],
  30.             'fk_mycmcm_request_category_parent'
  31.         );
  32.         // Create mycmcm_request_category_translation table
  33.         $table $schema->createTable('mycmcm_request_category_translation');
  34.         $table->addColumn('id'Types::GUID)->setNotnull(true);
  35.         $table->addColumn('translatable_id'Types::GUID)->setNotnull(true);
  36.         $table->addColumn('language'Types::STRING, ['length' => 10])->setNotnull(true);
  37.         $table->addColumn('name'Types::STRING, ['length' => 255])->setNotnull(true);
  38.         $table->addColumn('description'Types::TEXT)->setNotnull(false);
  39.         $table->addColumn('title'Types::STRING, ['length' => 255])->setNotnull(false);
  40.         $table->addColumn('note'Types::TEXT)->setNotnull(false);
  41.         $table->setPrimaryKey(['id']);
  42.         $table->addForeignKeyConstraint(
  43.             'mycmcm_request_category',
  44.             ['translatable_id'],
  45.             ['id'],
  46.             [],
  47.             'fk_mycmcm_request_category_translation'
  48.         );
  49.         // Create mycmcm_request_category_document table
  50.         $table $schema->createTable('mycmcm_request_category_document');
  51.         $table->addColumn('id'Types::GUID)->setNotnull(true);
  52.         $table->addColumn('category_id'Types::GUID)->setNotnull(true);
  53.         $table->addColumn('document_type_id'Types::GUID)->setNotnull(true);
  54.         $table->addColumn('is_required'Types::BOOLEAN)->setNotnull(true)->setDefault(false);
  55.         $table->addColumn('sort_order'Types::INTEGER)->setNotnull(true)->setDefault(0);
  56.         $table->setPrimaryKey(['id']);
  57.         $table->addForeignKeyConstraint(
  58.             'mycmcm_request_category',
  59.             ['category_id'],
  60.             ['id'],
  61.             ['onDelete' => 'CASCADE'],
  62.             'fk_mycmcm_request_category_document_category'
  63.         );
  64.         $table->addForeignKeyConstraint(
  65.             'document_type',
  66.             ['document_type_id'],
  67.             ['id'],
  68.             [],
  69.             'fk_mycmcm_request_category_document_type'
  70.         );
  71.         // Create mycmcm_request_category_document_translation table
  72.         $table $schema->createTable('mycmcm_request_category_document_translation');
  73.         $table->addColumn('id'Types::GUID)->setNotnull(true);
  74.         $table->addColumn('translatable_id'Types::GUID)->setNotnull(true);
  75.         $table->addColumn('language'Types::STRING, ['length' => 10])->setNotnull(true);
  76.         $table->addColumn('name'Types::STRING, ['length' => 255])->setNotnull(true);
  77.         $table->addColumn('note'Types::TEXT)->setNotnull(false);
  78.         $table->setPrimaryKey(['id']);
  79.         $table->addForeignKeyConstraint(
  80.             'mycmcm_request_category_document',
  81.             ['translatable_id'],
  82.             ['id'],
  83.             [],
  84.             'fk_mycmcm_request_category_document_translation'
  85.         );
  86.     }
  87.     public function down(Schema $schema): void
  88.     {
  89.         $this->skipIf(
  90.             false === $schema->hasTable('mycmcm_request_category'),
  91.             'The mycmcm_request_category table was already removed!'
  92.         );
  93.         $schema->dropTable('mycmcm_request_category_document_translation');
  94.         $schema->dropTable('mycmcm_request_category_document');
  95.         $schema->dropTable('mycmcm_request_category_translation');
  96.         $schema->dropTable('mycmcm_request_category');
  97.     }
  98. }