app/DoctrineMigrations/Version20251225000000.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.  * SetProductImageの画像順序をProductImageに同期するマイグレーション
  8.  * 
  9.  * 問題: セット商品の画像順序がset_product_imageには保存されているが、
  10.  *       product_imageには同期されていないため、ユーザー画面で正しく表示されない
  11.  * 
  12.  * 対応: set_product_imageのsort_noをproduct_imageに反映
  13.  */
  14. final class Version20251225000000 extends AbstractMigration
  15. {
  16.     public function up(Schema $schema): void
  17.     {
  18.         // SetProductImageの順序をProductImageに同期
  19.         $this->addSql("
  20.             UPDATE dtb_product_image pi
  21.             INNER JOIN dtb_product p ON pi.product_id = p.id
  22.             INNER JOIN dtb_set_product_image spi ON spi.set_product_id = p.set_product_id 
  23.                 AND spi.file_name = pi.file_name
  24.             SET pi.sort_no = spi.sort_no
  25.             WHERE p.product_type = 'set'
  26.                 AND p.set_product_id IS NOT NULL
  27.         ");
  28.         
  29.         $this->write('SetProductImageの画像順序をProductImageに同期しました');
  30.     }
  31.     public function down(Schema $schema): void
  32.     {
  33.         // ロールバックは不要(データの整合性を保つため)
  34.         $this->write('このマイグレーションのロールバックは不要です');
  35.     }
  36. }