app/DoctrineMigrations/Version20250917120000.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. /**
  7.  * 会員登録URLのリダイレクト機能のためのマイグレーション
  8.  * dtb_schoolテーブルにredirect_flgとredirect_urlフィールドを追加
  9.  */
  10. final class Version20250917120000 extends AbstractMigration
  11. {
  12.     public function getDescription(): string
  13.     {
  14.         return 'dtb_schoolテーブルにredirect_flg(smallint)とredirect_url(longtext)を追加';
  15.     }
  16.     public function up(Schema $schema): void
  17.     {
  18.         // redirect_flgカラムが存在するかチェック
  19.         $schemaManager $this->connection->createSchemaManager();
  20.         $columns $schemaManager->listTableColumns('dtb_school');
  21.         
  22.         $hasRedirectFlg false;
  23.         $hasRedirectUrl false;
  24.         
  25.         foreach ($columns as $column) {
  26.             if ($column->getName() === 'redirect_flg') {
  27.                 $hasRedirectFlg true;
  28.             }
  29.             if ($column->getName() === 'redirect_url') {
  30.                 $hasRedirectUrl true;
  31.             }
  32.         }
  33.         
  34.         // redirect_flgカラムが存在しない場合のみ追加
  35.         if (!$hasRedirectFlg) {
  36.             $this->addSql('ALTER TABLE dtb_school ADD redirect_flg SMALLINT DEFAULT 0 NOT NULL');
  37.         }
  38.         
  39.         // redirect_urlカラムが存在しない場合のみ追加
  40.         if (!$hasRedirectUrl) {
  41.             $this->addSql('ALTER TABLE dtb_school ADD redirect_url LONGTEXT DEFAULT NULL');
  42.         }
  43.     }
  44.     public function down(Schema $schema): void
  45.     {
  46.         // rollback処理 - カラムが存在する場合のみ削除
  47.         $schemaManager $this->connection->createSchemaManager();
  48.         $columns $schemaManager->listTableColumns('dtb_school');
  49.         
  50.         $hasRedirectFlg false;
  51.         $hasRedirectUrl false;
  52.         
  53.         foreach ($columns as $column) {
  54.             if ($column->getName() === 'redirect_flg') {
  55.                 $hasRedirectFlg true;
  56.             }
  57.             if ($column->getName() === 'redirect_url') {
  58.                 $hasRedirectUrl true;
  59.             }
  60.         }
  61.         
  62.         if ($hasRedirectUrl) {
  63.             $this->addSql('ALTER TABLE dtb_school DROP redirect_url');
  64.         }
  65.         
  66.         if ($hasRedirectFlg) {
  67.             $this->addSql('ALTER TABLE dtb_school DROP redirect_flg');
  68.         }
  69.     }
  70. }