app/DoctrineMigrations/Version20251024000000.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.  */
  9. final class Version20251024000000 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return '商品マスタに返品不可フラグと表示メッセージカラムを追加';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         $schemaManager $this->connection->createSchemaManager();
  18.         
  19.         // テーブルが存在するかチェック
  20.         if (!$schemaManager->tablesExist(['dtb_product'])) {
  21.             return;
  22.         }
  23.         
  24.         $columns $schemaManager->listTableColumns('dtb_product');
  25.         $columnNames array_map(function($column) {
  26.             return $column->getName();
  27.         }, $columns);
  28.         
  29.         // no_returnカラムが存在しない場合のみ追加
  30.         if (!in_array('no_return'$columnNames)) {
  31.             // 返品不可フラグ (デフォルト: false)
  32.             $this->addSql("ALTER TABLE dtb_product ADD no_return TINYINT(1) DEFAULT 0 NOT NULL COMMENT '返品不可フラグ'");
  33.         }
  34.         
  35.         // return_messageカラムが存在しない場合のみ追加
  36.         if (!in_array('return_message'$columnNames)) {
  37.             // 返品不可時の表示メッセージ
  38.             $this->addSql("ALTER TABLE dtb_product ADD return_message TEXT DEFAULT NULL COMMENT '返品不可時の表示メッセージ'");
  39.         }
  40.     }
  41.     public function down(Schema $schema): void
  42.     {
  43.         $schemaManager $this->connection->createSchemaManager();
  44.         
  45.         // テーブルが存在するかチェック
  46.         if (!$schemaManager->tablesExist(['dtb_product'])) {
  47.             return;
  48.         }
  49.         
  50.         $columns $schemaManager->listTableColumns('dtb_product');
  51.         $columnNames array_map(function($column) {
  52.             return $column->getName();
  53.         }, $columns);
  54.         
  55.         if (in_array('return_message'$columnNames)) {
  56.             $this->addSql("ALTER TABLE dtb_product DROP COLUMN return_message");
  57.         }
  58.         
  59.         if (in_array('no_return'$columnNames)) {
  60.             $this->addSql("ALTER TABLE dtb_product DROP COLUMN no_return");
  61.         }
  62.     }
  63. }