app/DoctrineMigrations/Version20250919000000.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.  * dtb_orderテーブルにdeposit_amountフィールドを追加
  9.  */
  10. final class Version20250919000000 extends AbstractMigration
  11. {
  12.     public function getDescription(): string
  13.     {
  14.         return 'dtb_orderテーブルにdeposit_amount(decimal)を追加 - 管理用入金額設定用';
  15.     }
  16.     public function up(Schema $schema): void
  17.     {
  18.         // カラムが存在するかチェック
  19.         $schemaManager $this->connection->createSchemaManager();
  20.         
  21.         // テーブルが存在するかチェック
  22.         if (!$schemaManager->tablesExist(['dtb_order'])) {
  23.             // テーブルが存在しない場合はスキップ
  24.             return;
  25.         }
  26.         
  27.         $columns $schemaManager->listTableColumns('dtb_order');
  28.         
  29.         $hasDepositAmount false;
  30.         
  31.         foreach ($columns as $column) {
  32.             if ($column->getName() === 'deposit_amount') {
  33.                 $hasDepositAmount true;
  34.             }
  35.         }
  36.         
  37.         // deposit_amountカラムが存在しない場合のみ追加
  38.         if (!$hasDepositAmount) {
  39.             $this->addSql('ALTER TABLE dtb_order ADD deposit_amount DECIMAL(12,2) DEFAULT 0 NOT NULL');
  40.         }
  41.     }
  42.     public function down(Schema $schema): void
  43.     {
  44.         // カラムが存在するかチェック
  45.         $schemaManager $this->connection->createSchemaManager();
  46.         
  47.         // テーブルが存在するかチェック
  48.         if (!$schemaManager->tablesExist(['dtb_order'])) {
  49.             // テーブルが存在しない場合はスキップ
  50.             return;
  51.         }
  52.         
  53.         $columns $schemaManager->listTableColumns('dtb_order');
  54.         
  55.         $hasDepositAmount false;
  56.         
  57.         foreach ($columns as $column) {
  58.             if ($column->getName() === 'deposit_amount') {
  59.                 $hasDepositAmount true;
  60.             }
  61.         }
  62.         
  63.         // deposit_amountカラムが存在する場合のみ削除
  64.         if ($hasDepositAmount) {
  65.             $this->addSql('ALTER TABLE dtb_order DROP deposit_amount');
  66.         }
  67.     }
  68. }