app/DoctrineMigrations/Version20251225000000.php line 1

Open in your IDE?
  1. <?php
    
    declare(strict_types=1);
    
    namespace DoctrineMigrations;
    
    use Doctrine\DBAL\Schema\Schema;
    use Doctrine\Migrations\AbstractMigration;
    
    /**
     * SetProductImageの画像順序をProductImageに同期するマイグレーション
     * 
     * 問題: セット商品の画像順序がset_product_imageには保存されているが、
     *       product_imageには同期されていないため、ユーザー画面で正しく表示されない
     * 
     * 対応: set_product_imageのsort_noをproduct_imageに反映
     */
    final class Version20251225000000 extends AbstractMigration
    {
        public function up(Schema $schema): void
        {
            // SetProductImageの順序をProductImageに同期
            $this->addSql("
                UPDATE dtb_product_image pi
                INNER JOIN dtb_product p ON pi.product_id = p.id
                INNER JOIN dtb_set_product_image spi ON spi.set_product_id = p.set_product_id 
                    AND spi.file_name = pi.file_name
                SET pi.sort_no = spi.sort_no
                WHERE p.product_type = 'set'
                    AND p.set_product_id IS NOT NULL
            ");
            
            $this->write('SetProductImageの画像順序をProductImageに同期しました');
        }
    
        public function down(Schema $schema): void
        {
            // ロールバックは不要(データの整合性を保つため)
            $this->write('このマイグレーションのロールバックは不要です');
        }
    }