app/DoctrineMigrations/Version20251010000000.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.  * Auto-generated Migration: Please modify to your needs!
  8.  */
  9. final class Version20251010000000 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return 'Add discriminator_type column to dtb_seller table';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         $schemaManager $this->connection->createSchemaManager();
  18.         
  19.         // テーブルが存在するかチェック
  20.         if (!$schemaManager->tablesExist(['dtb_seller'])) {
  21.             return;
  22.         }
  23.         
  24.         $columns $schemaManager->listTableColumns('dtb_seller');
  25.         $columnNames array_map(function($column) {
  26.             return $column->getName();
  27.         }, $columns);
  28.         
  29.         // discriminator_typeカラムが存在しない場合のみ追加
  30.         if (!in_array('discriminator_type'$columnNames)) {
  31.             // dtb_sellerテーブルにdiscriminator_typeカラムを追加
  32.             $this->addSql("ALTER TABLE dtb_seller ADD discriminator_type VARCHAR(255) NOT NULL DEFAULT 'seller'");
  33.             
  34.             // 既存のレコードにデフォルト値を設定
  35.             $this->addSql("UPDATE dtb_seller SET discriminator_type = 'seller' WHERE discriminator_type IS NULL OR discriminator_type = ''");
  36.         }
  37.     }
  38.     public function down(Schema $schema): void
  39.     {
  40.         $schemaManager $this->connection->createSchemaManager();
  41.         
  42.         // テーブルが存在するかチェック
  43.         if (!$schemaManager->tablesExist(['dtb_seller'])) {
  44.             return;
  45.         }
  46.         
  47.         $columns $schemaManager->listTableColumns('dtb_seller');
  48.         $columnNames array_map(function($column) {
  49.             return $column->getName();
  50.         }, $columns);
  51.         
  52.         // discriminator_typeカラムが存在する場合のみ削除
  53.         if (in_array('discriminator_type'$columnNames)) {
  54.             // dtb_sellerテーブルからdiscriminator_typeカラムを削除
  55.             $this->addSql('ALTER TABLE dtb_seller DROP discriminator_type');
  56.         }
  57.     }
  58. }