app/DoctrineMigrations/Version20260116000000.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.  * plg_wysiwyg_editor_settingsにセット商品のWYSIWYG設定を追加
  9.  */
  10. final class Version20260116000000 extends AbstractMigration
  11. {
  12.     public function up(Schema $schema): void
  13.     {
  14.         // dtb_set_product テーブルの存在確認
  15.         if ($schema->hasTable('dtb_set_product')) {
  16.             $table $schema->getTable('dtb_set_product');
  17.             // セット商品テーブルに商品注意書きフィールドを追加
  18.             if (!$table->hasColumn('product_caution_note')) {
  19.                 $this->addSql('ALTER TABLE dtb_set_product ADD product_caution_note TEXT DEFAULT NULL COMMENT \'商品注意書き\'');
  20.             }
  21.         }
  22.         // plg_wysiwyg_editor_settingsテーブルが存在するか確認
  23.         $tableExists $this->connection->fetchOne(
  24.             "SELECT COUNT(*) FROM information_schema.TABLES 
  25.              WHERE TABLE_SCHEMA = DATABASE() 
  26.              AND TABLE_NAME = 'plg_wysiwyg_editor_settings'"
  27.         );
  28.         
  29.         if ($tableExists == 0) {
  30.             // テーブルが存在しない場合は処理をスキップ
  31.             return;
  32.         }
  33.         
  34.         // url_path='product/set_product/' and selector='textarea.wysiwyg-area' の組み合わせが存在するか確認
  35.         $recordExists $this->connection->fetchOne(
  36.             "SELECT COUNT(*) FROM plg_wysiwyg_editor_settings 
  37.              WHERE url_path = 'product/set_product/' AND selector = 'textarea.wysiwyg-area'"
  38.         );
  39.         
  40.         if ($recordExists == 0) {
  41.             // 現在の最大IDを取得
  42.             $maxId $this->connection->fetchOne(
  43.                 "SELECT COALESCE(MAX(id), 0) FROM plg_wysiwyg_editor_settings"
  44.             );
  45.             
  46.             $nextId $maxId 1;
  47.             
  48.             // レコードを追加
  49.             $this->addSql(
  50.                 "INSERT INTO plg_wysiwyg_editor_settings (id, url_path, selector) VALUES (?, ?, ?)",
  51.                 [$nextId'product/set_product/''textarea.wysiwyg-area']
  52.             );
  53.         }
  54.     }
  55.     public function down(Schema $schema): void
  56.     {
  57.         // ロールバック処理: dtb_set_product から削除
  58.         if ($schema->hasTable('dtb_set_product')) {
  59.             $table $schema->getTable('dtb_set_product');
  60.             if ($table->hasColumn('product_caution_note')) {
  61.                 $this->addSql('ALTER TABLE dtb_set_product DROP product_caution_note');
  62.             }
  63.         }
  64.         // url_path='product/set_product/' and selector='textarea.wysiwyg-area' のレコードを削除
  65.         $this->addSql(
  66.             "DELETE FROM plg_wysiwyg_editor_settings 
  67.              WHERE url_path = 'product/set_product/' AND selector = 'textarea.wysiwyg-area'"
  68.         );
  69.     }
  70. }