migrations/Version20250225130000.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. use RuntimeException;
  8. final class Version20250225130000 extends AbstractMigration
  9. {
  10.     public function getDescription(): string
  11.     {
  12.         return 'Add inquiry_cmcm_request table with INT cmcm_request_id';
  13.     }
  14.     public function up(Schema $schema): void
  15.     {
  16.         $this->skipIf($schema->hasTable('inquiry_cmcm_request'), 'Table inquiry_cmcm_request already exists');
  17.         // Ensure required tables exist
  18.         if (!$schema->hasTable('inquiry') || !$schema->hasTable('cmcm_request')) {
  19.             throw new RuntimeException('Required tables (inquiry or cmcm_request) do not exist. Run migrations in correct order.');
  20.         }
  21.         $table $schema->createTable('inquiry_cmcm_request');
  22.         $table->addColumn('id'Types::GUID)->setNotnull(true);
  23.         $table->addColumn('inquiry_id'Types::STRING)->setLength(255)->setNotnull(true);
  24.         $table->addColumn('cmcm_request_id'Types::INTEGER)->setNotnull(true);
  25.         $table->addColumn('inquiry_assigned_pages'Types::JSON)->setNotnull(true);
  26.         $table->setPrimaryKey(['id']);
  27.         // Add indexes before foreign keys
  28.         $table->addIndex(['inquiry_id'], 'idx_inquiry_cmcm_request_inquiry');
  29.         $table->addIndex(['cmcm_request_id'], 'idx_inquiry_cmcm_request_cmcm_request');
  30.         // Add foreign keys with onDelete CASCADE to handle deletions properly
  31.         $table->addForeignKeyConstraint(
  32.             'inquiry',
  33.             ['inquiry_id'],
  34.             ['id'],
  35.             ['onDelete' => 'CASCADE'],
  36.             'fk_inquiry_cmcm_request_inquiry'
  37.         );
  38.         $table->addForeignKeyConstraint(
  39.             'cmcm_request',
  40.             ['cmcm_request_id'],
  41.             ['id'],
  42.             ['onDelete' => 'CASCADE'],
  43.             'fk_inquiry_cmcm_request_cmcm_request'
  44.         );
  45.     }
  46.     public function down(Schema $schema): void
  47.     {
  48.         $this->skipIf(!$schema->hasTable('inquiry_cmcm_request'), 'Table inquiry_cmcm_request does not exist');
  49.         $schema->dropTable('inquiry_cmcm_request');
  50.     }
  51. }