app/DoctrineMigrations/Version20250912000000.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 Version20250912000000 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return '商品テーブルに規格表画像フィールド(spec_image1, spec_image2)を追加';
  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.         // spec_image1カラムが存在しない場合のみ追加
  30.         if (!in_array('spec_image1'$columnNames)) {
  31.             // dtb_productテーブルに規格表画像フィールドを追加
  32.             $this->addSql('ALTER TABLE dtb_product ADD COLUMN spec_image1 LONGTEXT DEFAULT NULL');
  33.         }
  34.         
  35.         // spec_image2カラムが存在しない場合のみ追加
  36.         if (!in_array('spec_image2'$columnNames)) {
  37.             $this->addSql('ALTER TABLE dtb_product ADD COLUMN spec_image2 LONGTEXT DEFAULT NULL');
  38.         }
  39.     }
  40.     public function down(Schema $schema): void
  41.     {
  42.         $schemaManager $this->connection->createSchemaManager();
  43.         
  44.         // テーブルが存在するかチェック
  45.         if (!$schemaManager->tablesExist(['dtb_product'])) {
  46.             return;
  47.         }
  48.         
  49.         $columns $schemaManager->listTableColumns('dtb_product');
  50.         $columnNames array_map(function($column) {
  51.             return $column->getName();
  52.         }, $columns);
  53.         
  54.         // ロールバック時は追加したフィールドを削除
  55.         if (in_array('spec_image1'$columnNames)) {
  56.             $this->addSql('ALTER TABLE dtb_product DROP COLUMN spec_image1');
  57.         }
  58.         
  59.         if (in_array('spec_image2'$columnNames)) {
  60.             $this->addSql('ALTER TABLE dtb_product DROP COLUMN spec_image2');
  61.         }
  62.     }
  63. }