app/DoctrineMigrations/Version20240514064352.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 Version20240514064352 extends AbstractMigration
  10. {
  11.     const csv_types = [
  12.         [
  13.             'id' => 6,
  14.             'name' => '商品特徴CSV',
  15.         ],
  16.         [
  17.             'id' => 7,
  18.             'name' => '商品仕様(詳細)CSV',
  19.         ],
  20.         [
  21.             'id' => 8,
  22.             'name' => '商品よくあるご質問CSV',
  23.         ],
  24.         [
  25.             'id' => 9,
  26.             'name' => '商品関連特集CSV',
  27.         ],
  28.     ];
  29.     const csvs = [
  30.         // 商品特徴CSV
  31.         [
  32.             'csv_type_id' => 6,
  33.             'entity_name' => 'Customize\\\Entity\\\ProductFeature',
  34.             'field_name' => 'id',
  35.             'disp_name' => '商品特徴ID',
  36.             'sort_no' => 1,
  37.             'enabled' => true,
  38.         ],
  39.         [
  40.             'csv_type_id' => 6,
  41.             'entity_name' => 'Customize\\\Entity\\\ProductFeature',
  42.             'field_name' => 'Product',
  43.             'reference_field_name' => 'id',
  44.             'disp_name' => '商品ID',
  45.             'enabled' => true,
  46.         ],
  47.         [
  48.             'csv_type_id' => 6,
  49.             'entity_name' => 'Customize\\\Entity\\\ProductFeature',
  50.             'field_name' => 'Product',
  51.             'reference_field_name' => 'name',
  52.             'disp_name' => '商品名',
  53.             'enabled' => true,
  54.         ],
  55.         [
  56.             'csv_type_id' => 6,
  57.             'entity_name' => 'Customize\\\Entity\\\ProductFeature',
  58.             'field_name' => 'file_name',
  59.             'disp_name' => '画像',
  60.             'enabled' => true,
  61.         ],
  62.         [
  63.             'csv_type_id' => 6,
  64.             'entity_name' => 'Customize\\\Entity\\\ProductFeature',
  65.             'field_name' => 'caption',
  66.             'disp_name' => '見出し',
  67.             'enabled' => true,
  68.         ],
  69.         [
  70.             'csv_type_id' => 6,
  71.             'entity_name' => 'Customize\\\Entity\\\ProductFeature',
  72.             'field_name' => 'content',
  73.             'disp_name' => '内容',
  74.             'enabled' => true,
  75.         ],
  76.         // 商品仕様(詳細)CSV
  77.         [
  78.             'csv_type_id' => 7,
  79.             'entity_name' => 'Customize\\\Entity\\\ProductSpec',
  80.             'field_name' => 'id',
  81.             'disp_name' => '商品仕様(詳細)ID',
  82.             'sort_no' => 1,
  83.             'enabled' => true,
  84.         ],
  85.         [
  86.             'csv_type_id' => 7,
  87.             'entity_name' => 'Customize\\\Entity\\\ProductSpec',
  88.             'field_name' => 'Product',
  89.             'reference_field_name' => 'id',
  90.             'disp_name' => '商品ID',
  91.             'enabled' => true,
  92.         ],
  93.         [
  94.             'csv_type_id' => 7,
  95.             'entity_name' => 'Customize\\\Entity\\\ProductSpec',
  96.             'field_name' => 'Product',
  97.             'reference_field_name' => 'name',
  98.             'disp_name' => '商品名',
  99.             'enabled' => true,
  100.         ],
  101.         [
  102.             'csv_type_id' => 7,
  103.             'entity_name' => 'Customize\\\Entity\\\ProductSpec',
  104.             'field_name' => 'title',
  105.             'disp_name' => 'タイトル',
  106.             'enabled' => true,
  107.         ],
  108.         [
  109.             'csv_type_id' => 7,
  110.             'entity_name' => 'Customize\\\Entity\\\ProductSpec',
  111.             'field_name' => 'content',
  112.             'disp_name' => 'スペック詳細',
  113.             'enabled' => true,
  114.         ],
  115.         // 商品よくあるご質問CSV
  116.         [
  117.             'csv_type_id' => 8,
  118.             'entity_name' => 'Customize\\\Entity\\\ProductFaq',
  119.             'field_name' => 'id',
  120.             'disp_name' => '商品よくあるご質問ID',
  121.             'sort_no' => 1,
  122.             'enabled' => true,
  123.         ],
  124.         [
  125.             'csv_type_id' => 8,
  126.             'entity_name' => 'Customize\\\Entity\\\ProductFaq',
  127.             'field_name' => 'Product',
  128.             'reference_field_name' => 'id',
  129.             'disp_name' => '商品ID',
  130.             'enabled' => true,
  131.         ],
  132.         [
  133.             'csv_type_id' => 8,
  134.             'entity_name' => 'Customize\\\Entity\\\ProductFaq',
  135.             'field_name' => 'Product',
  136.             'reference_field_name' => 'name',
  137.             'disp_name' => '商品名',
  138.             'enabled' => true,
  139.         ],
  140.         [
  141.             'csv_type_id' => 8,
  142.             'entity_name' => 'Customize\\\Entity\\\ProductFaq',
  143.             'field_name' => 'question',
  144.             'disp_name' => '質問',
  145.             'enabled' => true,
  146.         ],
  147.         [
  148.             'csv_type_id' => 8,
  149.             'entity_name' => 'Customize\\\Entity\\\ProductFaq',
  150.             'field_name' => 'answer',
  151.             'disp_name' => '答え',
  152.             'enabled' => true,
  153.         ],
  154.         // 商品関連特集CSV
  155.         [
  156.             'csv_type_id' => 9,
  157.             'entity_name' => 'Customize\\\Entity\\\ProductRelateFeature',
  158.             'field_name' => 'id',
  159.             'disp_name' => '商品関連特集ID',
  160.             'sort_no' => 1,
  161.             'enabled' => true,
  162.         ],
  163.         [
  164.             'csv_type_id' => 9,
  165.             'entity_name' => 'Customize\\\Entity\\\ProductRelateFeature',
  166.             'field_name' => 'Product',
  167.             'reference_field_name' => 'id',
  168.             'disp_name' => '商品ID',
  169.             'enabled' => true,
  170.         ],
  171.         [
  172.             'csv_type_id' => 9,
  173.             'entity_name' => 'Customize\\\Entity\\\ProductRelateFeature',
  174.             'field_name' => 'Product',
  175.             'reference_field_name' => 'name',
  176.             'disp_name' => '商品名',
  177.             'enabled' => true,
  178.         ],
  179.         [
  180.             'csv_type_id' => 9,
  181.             'entity_name' => 'Customize\\\Entity\\\ProductRelateFeature',
  182.             'field_name' => 'file_name',
  183.             'disp_name' => '画像',
  184.             'enabled' => true,
  185.         ],
  186.         [
  187.             'csv_type_id' => 9,
  188.             'entity_name' => 'Customize\\\Entity\\\ProductRelateFeature',
  189.             'field_name' => 'alt_text',
  190.             'disp_name' => '画像altテキスト',
  191.             'enabled' => true,
  192.         ],
  193.         [
  194.             'csv_type_id' => 9,
  195.             'entity_name' => 'Customize\\\Entity\\\ProductRelateFeature',
  196.             'field_name' => 'category_name',
  197.             'disp_name' => 'カテゴリーネーム',
  198.             'enabled' => true,
  199.         ],
  200.         [
  201.             'csv_type_id' => 9,
  202.             'entity_name' => 'Customize\\\Entity\\\ProductRelateFeature',
  203.             'field_name' => 'date',
  204.             'disp_name' => '日付',
  205.             'enabled' => true,
  206.         ],
  207.         [
  208.             'csv_type_id' => 9,
  209.             'entity_name' => 'Customize\\\Entity\\\ProductRelateFeature',
  210.             'field_name' => 'title',
  211.             'disp_name' => 'タイトル',
  212.             'enabled' => true,
  213.         ],
  214.         [
  215.             'csv_type_id' => 9,
  216.             'entity_name' => 'Customize\\\Entity\\\ProductRelateFeature',
  217.             'field_name' => 'thumb_content',
  218.             'disp_name' => '本文サムネイル',
  219.             'enabled' => true,
  220.         ],
  221.         [
  222.             'csv_type_id' => 9,
  223.             'entity_name' => 'Customize\\\Entity\\\ProductRelateFeature',
  224.             'field_name' => 'url',
  225.             'disp_name' => 'URL',
  226.             'enabled' => true,
  227.         ],
  228.     ];
  229.     public function getDescription(): string
  230.     {
  231.         return '';
  232.     }
  233.     public function up(Schema $schema): void
  234.     {
  235.         foreach (self::csv_types as $csv_type) {
  236.             $this->addSql(
  237.                 "INSERT INTO mtb_csv_type (id, name, sort_no, discriminator_type) VALUES (
  238.                     {$csv_type['id']},
  239.                     '{$csv_type['name']}',
  240.                     (SELECT MAX(sort_no) + 1 FROM mtb_csv_type as ct),
  241.                     'csvtype'
  242.                 )"
  243.             );
  244.         }
  245.         foreach (self::csvs as $csv) {
  246.             $reference_field_name $csv['reference_field_name'] ?? null;
  247.             $sort_no $csv['sort_no'] ?? "(SELECT c.sort_no FROM dtb_csv as c WHERE c.csv_type_id = {$csv['csv_type_id']} ORDER BY c.sort_no DESC LIMIT 1) + 1";
  248.             $this->addSql(
  249.                 "INSERT INTO dtb_csv (csv_type_id, creator_id, entity_name, field_name, reference_field_name, disp_name, sort_no, enabled, create_date, update_date, discriminator_type) VALUES (
  250.                     {$csv['csv_type_id']},
  251.                     null,
  252.                     '{$csv['entity_name']}',
  253.                     '{$csv['field_name']}',
  254.                     '{$reference_field_name}',
  255.                     '{$csv['disp_name']}',
  256.                     {$sort_no},
  257.                     1,
  258.                     NOW(),
  259.                     NOW(),
  260.                     'csv'
  261.                 )"
  262.             );
  263.         }
  264.     }
  265.     public function down(Schema $schema): void
  266.     {
  267.         foreach (self::csvs as $csv) {
  268.             $this->addSql(
  269.                 "DELETE FROM dtb_csv WHERE entity_name = '{$csv['entity_name']}' AND field_name = '{$csv['field_name']}'"
  270.             );
  271.         }
  272.         foreach (self::csv_types as $csv_type) {
  273.             $this->addSql(
  274.                 "DELETE FROM mtb_csv_type WHERE id = {$csv_type['id']}"
  275.             );
  276.         }
  277.     }
  278. }