app/DoctrineMigrations/Version20251119150206.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.  * Auto-generated Migration: Please modify to your needs!
  8.  */
  9. final class Version20251119150206 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return 'Insert product filter categories with parent-child hierarchy starting from id 1100';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         // 1. 追加ギガ (Additional Giga) - Parent ID: 1100
  18.         $this->addSql('
  19.             INSERT INTO dtb_category
  20.                 (id, parent_category_id, creator_id, category_name, hierarchy, sort_no, is_searchable, create_date, update_date, discriminator_type)
  21.             VALUES
  22.                 (1100, NULL, NULL, \'追加ギガ\', 1, 0, 1, NOW(), NOW(), \'category\')
  23.             ON CONFLICT (id) DO UPDATE SET
  24.                 category_name = EXCLUDED.category_name,
  25.                 is_searchable = 1,
  26.                 update_date = NOW()
  27.         ');
  28.         $additionalGigaCategories = [
  29.             ['id' => 1101'category_name' => 'MR1 追加ギガ(国内)'],
  30.             ['id' => 1102'category_name' => 'MR1 追加ギガ(海外)'],
  31.             ['id' => 1103'category_name' => 'U20 追加ギガ(国内)'],
  32.             ['id' => 1104'category_name' => 'U20 追加ギガ(海外)'],
  33.             ['id' => 1105'category_name' => 'U3 追加ギガ(国内)'],
  34.             ['id' => 1106'category_name' => 'U3 追加ギガ(海外)'],
  35.         ];
  36.         foreach ($additionalGigaCategories as $cat) {
  37.             $this->addSql('
  38.                 INSERT INTO dtb_category
  39.                     (id, parent_category_id, creator_id, category_name, hierarchy, sort_no, is_searchable, create_date, update_date, discriminator_type)
  40.                 VALUES
  41.                     (:id, 1100, NULL, :category_name, 2, 0, 1, NOW(), NOW(), \'category\')
  42.                 ON CONFLICT (id) DO UPDATE SET
  43.                     parent_category_id = 1100,
  44.                     category_name = EXCLUDED.category_name,
  45.                     hierarchy = 2,
  46.                     is_searchable = 1,
  47.                     update_date = NOW()
  48.             ', [
  49.                 'id' => $cat['id'],
  50.                 'category_name' => $cat['category_name'],
  51.             ]);
  52.         }
  53.         // 2. モデル (Model) - Parent ID: 1107
  54.         $this->addSql('
  55.             INSERT INTO dtb_category
  56.                 (id, parent_category_id, creator_id, category_name, hierarchy, sort_no, is_searchable, create_date, update_date, discriminator_type)
  57.             VALUES
  58.                 (1107, NULL, NULL, \'モデル\', 1, 0, 1, NOW(), NOW(), \'category\')
  59.             ON CONFLICT (id) DO UPDATE SET
  60.                 category_name = EXCLUDED.category_name,
  61.                 is_searchable = 1,
  62.                 update_date = NOW()
  63.         ');
  64.         $modelCategories = [
  65.             ['id' => 1108'category_name' => 'MR1(タッチパネル液晶)'],
  66.             ['id' => 1109'category_name' => 'U20(軽量・薄型)'],
  67.             ['id' => 1110'category_name' => 'U3(リユース)'],
  68.         ];
  69.         foreach ($modelCategories as $cat) {
  70.             $this->addSql('
  71.                 INSERT INTO dtb_category
  72.                     (id, parent_category_id, creator_id, category_name, hierarchy, sort_no, is_searchable, create_date, update_date, discriminator_type)
  73.                 VALUES
  74.                     (:id, 1107, NULL, :category_name, 2, 0, 1, NOW(), NOW(), \'category\')
  75.                 ON CONFLICT (id) DO UPDATE SET
  76.                     parent_category_id = 1107,
  77.                     category_name = EXCLUDED.category_name,
  78.                     hierarchy = 2,
  79.                     is_searchable = 1,
  80.                     update_date = NOW()
  81.             ', [
  82.                 'id' => $cat['id'],
  83.                 'category_name' => $cat['category_name'],
  84.             ]);
  85.         }
  86.         // 3. ギガ/プラン (Giga/Plan) - Parent ID: 1111
  87.         $this->addSql('
  88.             INSERT INTO dtb_category
  89.                 (id, parent_category_id, creator_id, category_name, hierarchy, sort_no, is_searchable, create_date, update_date, discriminator_type)
  90.             VALUES
  91.                 (1111, NULL, NULL, \'ギガ/プラン\', 1, 0, 1, NOW(), NOW(), \'category\')
  92.             ON CONFLICT (id) DO UPDATE SET
  93.                 category_name = EXCLUDED.category_name,
  94.                 is_searchable = 1,
  95.                 update_date = NOW()
  96.         ');
  97.         $gigaPlanCategories = [
  98.             ['id' => 1112'category_name' => '5GB'],
  99.             ['id' => 1113'category_name' => '10GB'],
  100.             ['id' => 1114'category_name' => '30GB'],
  101.             ['id' => 1115'category_name' => '50GB'],
  102.             ['id' => 1116'category_name' => '100GB'],
  103.             ['id' => 1117'category_name' => '30日無制限'],
  104.         ];
  105.         foreach ($gigaPlanCategories as $cat) {
  106.             $this->addSql('
  107.                 INSERT INTO dtb_category
  108.                     (id, parent_category_id, creator_id, category_name, hierarchy, sort_no, is_searchable, create_date, update_date, discriminator_type)
  109.                 VALUES
  110.                     (:id, 1111, NULL, :category_name, 2, 0, 1, NOW(), NOW(), \'category\')
  111.                 ON CONFLICT (id) DO UPDATE SET
  112.                     parent_category_id = 1111,
  113.                     category_name = EXCLUDED.category_name,
  114.                     hierarchy = 2,
  115.                     is_searchable = 1,
  116.                     update_date = NOW()
  117.             ', [
  118.                 'id' => $cat['id'],
  119.                 'category_name' => $cat['category_name'],
  120.             ]);
  121.         }
  122.         // 4. 有効期間 (Validity Period) - Parent ID: 1118
  123.         $this->addSql('
  124.             INSERT INTO dtb_category
  125.                 (id, parent_category_id, creator_id, category_name, hierarchy, sort_no, is_searchable, create_date, update_date, discriminator_type)
  126.             VALUES
  127.                 (1118, NULL, NULL, \'有効期間\', 1, 0, 1, NOW(), NOW(), \'category\')
  128.             ON CONFLICT (id) DO UPDATE SET
  129.                 category_name = EXCLUDED.category_name,
  130.                 is_searchable = 1,
  131.                 update_date = NOW()
  132.         ');
  133.         $validityPeriodCategories = [
  134.             ['id' => 1119'category_name' => '50日'],
  135.             ['id' => 1120'category_name' => '100日'],
  136.             ['id' => 1121'category_name' => '365日'],
  137.             ['id' => 1122'category_name' => '30日(無制限)'],
  138.         ];
  139.         foreach ($validityPeriodCategories as $cat) {
  140.             $this->addSql('
  141.                 INSERT INTO dtb_category
  142.                     (id, parent_category_id, creator_id, category_name, hierarchy, sort_no, is_searchable, create_date, update_date, discriminator_type)
  143.                 VALUES
  144.                     (:id, 1118, NULL, :category_name, 2, 0, 1, NOW(), NOW(), \'category\')
  145.                 ON CONFLICT (id) DO UPDATE SET
  146.                     parent_category_id = 1118,
  147.                     category_name = EXCLUDED.category_name,
  148.                     hierarchy = 2,
  149.                     is_searchable = 1,
  150.                     update_date = NOW()
  151.             ', [
  152.                 'id' => $cat['id'],
  153.                 'category_name' => $cat['category_name'],
  154.             ]);
  155.         }
  156.     }
  157.     public function down(Schema $schema): void
  158.     {
  159.         // Xóa các category con trước (theo thứ tự ngược lại)
  160.         // Xóa 有効期間 children (1119-1122)
  161.         $validityPeriodIds = [1119112011211122];
  162.         $this->addSql('DELETE FROM dtb_category WHERE id IN (' implode(','$validityPeriodIds) . ')');
  163.         // Xóa ギガ/プラン children (1112-1117)
  164.         $gigaPlanIds = [111211131114111511161117];
  165.         $this->addSql('DELETE FROM dtb_category WHERE id IN (' implode(','$gigaPlanIds) . ')');
  166.         // Xóa モデル children (1108-1110)
  167.         $modelIds = [110811091110];
  168.         $this->addSql('DELETE FROM dtb_category WHERE id IN (' implode(','$modelIds) . ')');
  169.         // Xóa 追加ギガ children (1101-1106)
  170.         $additionalGigaIds = [110111021103110411051106];
  171.         $this->addSql('DELETE FROM dtb_category WHERE id IN (' implode(','$additionalGigaIds) . ')');
  172.         // Xóa các category cha
  173.         $parentIds = [1118111111071100];
  174.         $this->addSql('DELETE FROM dtb_category WHERE id IN (' implode(','$parentIds) . ')');
  175.     }
  176. }