app/DoctrineMigrations/Version20260119000000.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_set_productテーブルにpurchase_limitフィールドを追加
  9.  */
  10. final class Version20260119000000 extends AbstractMigration
  11. {
  12.     public function getDescription(): string
  13.     {
  14.         return 'dtb_set_productテーブルにpurchase_limit(integer)を追加';
  15.     }
  16.     public function up(Schema $schema): void
  17.     {
  18.         // purchase_limitカラムが存在するかチェック
  19.         $schemaManager $this->connection->createSchemaManager();
  20.         $columns $schemaManager->listTableColumns('dtb_set_product');
  21.         
  22.         $hasPurchaseLimit false;
  23.         
  24.         foreach ($columns as $column) {
  25.             if ($column->getName() === 'purchase_limit') {
  26.                 $hasPurchaseLimit true;
  27.                 break;
  28.             }
  29.         }
  30.         
  31.         // purchase_limitカラムが存在しない場合のみ追加
  32.         if (!$hasPurchaseLimit) {
  33.             $this->addSql('ALTER TABLE dtb_set_product ADD purchase_limit INT UNSIGNED DEFAULT NULL');
  34.         }
  35.     }
  36.     public function down(Schema $schema): void
  37.     {
  38.         // purchase_limitカラムが存在する場合のみ削除
  39.         $schemaManager $this->connection->createSchemaManager();
  40.         $columns $schemaManager->listTableColumns('dtb_set_product');
  41.         
  42.         $hasPurchaseLimit false;
  43.         
  44.         foreach ($columns as $column) {
  45.             if ($column->getName() === 'purchase_limit') {
  46.                 $hasPurchaseLimit true;
  47.                 break;
  48.             }
  49.         }
  50.         
  51.         if ($hasPurchaseLimit) {
  52.             $this->addSql('ALTER TABLE dtb_set_product DROP COLUMN purchase_limit');
  53.         }
  54.     }
  55. }