app/DoctrineMigrations/Version20251027000000.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.  */
  9. final class Version20251027000000 extends AbstractMigration
  10. {
  11.     public function up(Schema $schema): void
  12.     {
  13.         $schemaManager $this->connection->createSchemaManager();
  14.         
  15.         // dtb_seller_output_nameテーブルが存在しない場合のみ作成
  16.         if (!$schemaManager->tablesExist(['dtb_seller_output_name'])) {
  17.             // 販売元出力名テーブルの作成
  18.             $this->addSql("
  19.                 CREATE TABLE dtb_seller_output_name (
  20.                     id INT UNSIGNED AUTO_INCREMENT NOT NULL,
  21.                     seller_name VARCHAR(255) NOT NULL,
  22.                     company_name VARCHAR(255) DEFAULT NULL,
  23.                     postal_code VARCHAR(8) DEFAULT NULL,
  24.                     pref VARCHAR(255) DEFAULT NULL,
  25.                     addr01 VARCHAR(255) DEFAULT NULL,
  26.                     addr02 VARCHAR(255) DEFAULT NULL,
  27.                     phone_number VARCHAR(14) DEFAULT NULL,
  28.                     fax_number VARCHAR(14) DEFAULT NULL,
  29.                     email VARCHAR(255) DEFAULT NULL,
  30.                     invoice_registration_number VARCHAR(255) DEFAULT NULL,
  31.                     sort_no INT UNSIGNED NOT NULL DEFAULT 0,
  32.                     discriminator_type VARCHAR(255) NOT NULL,
  33.                     create_date DATETIME NOT NULL COMMENT '(DC2Type:datetimetz)',
  34.                     update_date DATETIME NOT NULL COMMENT '(DC2Type:datetimetz)',
  35.                     PRIMARY KEY(id)
  36.                 ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci ENGINE = InnoDB
  37.             ");
  38.             
  39.             // デフォルトデータの挿入(基本情報から取得したデータで初期化)
  40.             $this->addSql("
  41.                 INSERT INTO dtb_seller_output_name 
  42.                 (seller_name, company_name, postal_code, addr01, addr02, phone_number, email, invoice_registration_number, sort_no, discriminator_type, create_date, update_date)
  43.                 SELECT 
  44.                     shop_name,
  45.                     company_name,
  46.                     postal_code,
  47.                     addr01,
  48.                     addr02,
  49.                     phone_number,
  50.                     email01,
  51.                     invoice_registration_number,
  52.                     0,
  53.                     'selleroutputname',
  54.                     NOW(),
  55.                     NOW()
  56.                 FROM dtb_base_info
  57.                 LIMIT 1
  58.             ");
  59.         }
  60.         
  61.         // plg_claim_pdfテーブルが存在し、seller_output_name_idカラムが存在しない場合のみ追加
  62.         if ($schemaManager->tablesExist(['plg_claim_pdf'])) {
  63.             $columns $schemaManager->listTableColumns('plg_claim_pdf');
  64.             $columnNames array_map(function($column) {
  65.                 return $column->getName();
  66.             }, $columns);
  67.             
  68.             if (!in_array('seller_output_name_id'$columnNames)) {
  69.                 // plg_claim_pdf テーブルに販売元出力名ID カラムを追加
  70.                 $this->addSql("
  71.                     ALTER TABLE plg_claim_pdf 
  72.                     ADD COLUMN seller_output_name_id INT UNSIGNED DEFAULT NULL AFTER member_id,
  73.                     ADD INDEX IDX_SELLER_OUTPUT_NAME (seller_output_name_id)
  74.                 ");
  75.             }
  76.         }
  77.     }
  78.     public function down(Schema $schema): void
  79.     {
  80.         $schemaManager $this->connection->createSchemaManager();
  81.         
  82.         // plg_claim_pdf テーブルから販売元出力名ID カラムを削除
  83.         if ($schemaManager->tablesExist(['plg_claim_pdf'])) {
  84.             $columns $schemaManager->listTableColumns('plg_claim_pdf');
  85.             $columnNames array_map(function($column) {
  86.                 return $column->getName();
  87.             }, $columns);
  88.             
  89.             if (in_array('seller_output_name_id'$columnNames)) {
  90.                 $this->addSql("ALTER TABLE plg_claim_pdf DROP INDEX IDX_SELLER_OUTPUT_NAME");
  91.                 $this->addSql("ALTER TABLE plg_claim_pdf DROP COLUMN seller_output_name_id");
  92.             }
  93.         }
  94.         // 販売元出力名テーブルの削除
  95.         if ($schemaManager->tablesExist(['dtb_seller_output_name'])) {
  96.             $this->addSql("DROP TABLE dtb_seller_output_name");
  97.         }
  98.     }
  99. }