app/DoctrineMigrations/Version20250918000000.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.  * 商品規格にメーカー取り寄せフラグを追加するためのマイグレーション
  8.  * dtb_product_classテーブルにmaker_order_flgフィールドを追加
  9.  */
  10. final class Version20250918000000 extends AbstractMigration
  11. {
  12.     public function getDescription(): string
  13.     {
  14.         return 'dtb_product_classテーブルにmaker_order_flg(boolean)を追加 - メーカー取り寄せフラグ用';
  15.     }
  16.     public function up(Schema $schema): void
  17.     {
  18.         // maker_order_flgカラムが存在するかチェック
  19.         $schemaManager $this->connection->createSchemaManager();
  20.         
  21.         // テーブルが存在するかチェック
  22.         if (!$schemaManager->tablesExist(['dtb_product_class'])) {
  23.             // テーブルが存在しない場合はスキップ
  24.             return;
  25.         }
  26.         
  27.         $columns $schemaManager->listTableColumns('dtb_product_class');
  28.         
  29.         $hasMakerOrderFlg false;
  30.         
  31.         foreach ($columns as $column) {
  32.             if ($column->getName() === 'maker_order_flg') {
  33.                 $hasMakerOrderFlg true;
  34.                 break;
  35.             }
  36.         }
  37.         
  38.         // maker_order_flgカラムが存在しない場合のみ追加
  39.         if (!$hasMakerOrderFlg) {
  40.             $this->addSql('ALTER TABLE dtb_product_class ADD maker_order_flg BOOLEAN DEFAULT FALSE NOT NULL');
  41.         }
  42.     }
  43.     public function down(Schema $schema): void
  44.     {
  45.         // maker_order_flgカラムを削除
  46.         $schemaManager $this->connection->createSchemaManager();
  47.         
  48.         if ($schemaManager->tablesExist(['dtb_product_class'])) {
  49.             $columns $schemaManager->listTableColumns('dtb_product_class');
  50.             
  51.             $hasMakerOrderFlg false;
  52.             
  53.             foreach ($columns as $column) {
  54.                 if ($column->getName() === 'maker_order_flg') {
  55.                     $hasMakerOrderFlg true;
  56.                     break;
  57.                 }
  58.             }
  59.             
  60.             if ($hasMakerOrderFlg) {
  61.                 $this->addSql('ALTER TABLE dtb_product_class DROP COLUMN maker_order_flg');
  62.             }
  63.         }
  64.     }
  65. }