app/DoctrineMigrations/Version20251119160726.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.  * dtb_orderテーブルの無効なpayment_idを修正
  8.  */
  9. final class Version20251119160726 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return 'dtb_orderテーブルの無効なpayment_id値をNULLまたは有効な値に修正';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         // 無効なpayment_idをNULLに設定
  18.         // dtb_paymentテーブルに存在しないpayment_idを持つレコードを修正
  19.         $this->addSql("
  20.             UPDATE dtb_order 
  21.             SET payment_id = NULL 
  22.             WHERE payment_id IS NOT NULL 
  23.             AND payment_id NOT IN (SELECT id FROM dtb_payment)
  24.         ");
  25.         
  26.         // または、デフォルトの支払い方法に変更する場合は以下を使用
  27.         // 代金引換(id=4)などのデフォルト値に設定
  28.         // $this->addSql("
  29.         //     UPDATE dtb_order 
  30.         //     SET payment_id = 4
  31.         //     WHERE payment_id IS NOT NULL 
  32.         //     AND payment_id NOT IN (SELECT id FROM dtb_payment)
  33.         // ");
  34.     }
  35.     public function down(Schema $schema): void
  36.     {
  37.         // このマイグレーションはデータクリーニングのため、ロールバックは不要
  38.         // 無効な値に戻すことは望ましくない
  39.     }
  40. }