<?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('このマイグレーションのロールバックは不要です');
}
}