migrations/Version20250602102500.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\Migrations\AbstractMigration;
  6. use RuntimeException;
  7. final class Version20250602102500 extends AbstractMigration
  8. {
  9.     public function getDescription(): string
  10.     {
  11.         return 'Create cmcm_request_cmcm_request junction table for many-to-many self-referential relationship';
  12.     }
  13.     public function up(Schema $schema): void
  14.     {
  15.         $this->skipIf($schema->hasTable('cmcm_request_cmcm_request'), 'Table cmcm_request_cmcm_request already exists');
  16.         // Ensure the cmcm_request table exists
  17.         if (!$schema->hasTable('cmcm_request')) {
  18.             throw new RuntimeException('Required table cmcm_request does not exist. Run migrations in correct order.');
  19.         }
  20.         $junctionTable $schema->createTable('cmcm_request_cmcm_request');
  21.         $junctionTable->addColumn('cmcm_request_source''integer', ['notnull' => true]);
  22.         $junctionTable->addColumn('cmcm_request_target''integer', ['notnull' => true]);
  23.         $junctionTable->addIndex(['cmcm_request_source'], 'IDX_CMCM_REQUEST_SOURCE');
  24.         $junctionTable->addIndex(['cmcm_request_target'], 'IDX_CMCM_REQUEST_TARGET');
  25.         $junctionTable->setPrimaryKey(['cmcm_request_source''cmcm_request_target']);
  26.         $junctionTable->addForeignKeyConstraint('cmcm_request', ['cmcm_request_source'], ['id'], ['onDelete' => 'CASCADE'], 'FK_CMCM_REQUEST_SOURCE');
  27.         $junctionTable->addForeignKeyConstraint('cmcm_request', ['cmcm_request_target'], ['id'], ['onDelete' => 'CASCADE'], 'FK_CMCM_REQUEST_TARGET');
  28.     }
  29.     public function down(Schema $schema): void
  30.     {
  31.         $this->skipIf(!$schema->hasTable('cmcm_request_cmcm_request'), 'Table cmcm_request_cmcm_request does not exist');
  32.         $schema->dropTable('cmcm_request_cmcm_request');
  33.     }
  34. }