app/DoctrineMigrations/Version20260130000000.php line 1

Open in your IDE?
  1. <?php
    
    declare(strict_types=1);
    
    namespace DoctrineMigrations;
    
    use Doctrine\DBAL\Schema\Schema;
    use Doctrine\Migrations\AbstractMigration;
    
    /**
     * dtb_csvに受注・商品の納入日とお渡し日フィールドを追加するマイグレーション
     */
    final class Version20260130000000 extends AbstractMigration
    {
        const NAME = 'dtb_csv';
    
        public function getDescription(): string
        {
            return 'Add delivery_date and handover_date CSV fields for Order and OrderItem';
        }
    
        public function up(Schema $schema): void
        {
            // 受注CSV(csv_type_id = 3)に受注の納入日を追加
            $exist = $this->connection->fetchOne(
                "SELECT COUNT(*) FROM dtb_csv WHERE csv_type_id = 3 AND entity_name = ? AND field_name = 'order_delivery_date' AND disp_name = '納入日'",
                ['Eccube\\Entity\\Order']
            );
    
            if ($exist == 0) {
                $this->addSql("INSERT INTO dtb_csv (csv_type_id, creator_id, entity_name, field_name, disp_name, sort_no, enabled, create_date, update_date, discriminator_type) VALUES (3, 1, 'Eccube\\\\Entity\\\\Order', 'order_delivery_date', '納入日', 1000, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'csv')");
            }
    
            // 受注CSV(csv_type_id = 3)に受注のお渡し日を追加
            $exist = $this->connection->fetchOne(
                "SELECT COUNT(*) FROM dtb_csv WHERE csv_type_id = 3 AND entity_name = ? AND field_name = 'order_handover_date' AND disp_name = 'お渡し日'",
                ['Eccube\\Entity\\Order']
            );
    
            if ($exist == 0) {
                $this->addSql("INSERT INTO dtb_csv (csv_type_id, creator_id, entity_name, field_name, disp_name, sort_no, enabled, create_date, update_date, discriminator_type) VALUES (3, 1, 'Eccube\\\\Entity\\\\Order', 'order_handover_date', 'お渡し日', 1001, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'csv')");
            }
    
            // 受注CSV(csv_type_id = 3)に商品の納入日を追加
            $exist = $this->connection->fetchOne(
                "SELECT COUNT(*) FROM dtb_csv WHERE csv_type_id = 3 AND entity_name = ? AND field_name = 'item_delivery_date' AND disp_name = '商品納入日'",
                ['Eccube\\Entity\\OrderItem']
            );
    
            if ($exist == 0) {
                $this->addSql("INSERT INTO dtb_csv (csv_type_id, creator_id, entity_name, field_name, disp_name, sort_no, enabled, create_date, update_date, discriminator_type) VALUES (3, 1, 'Eccube\\\\Entity\\\\OrderItem', 'item_delivery_date', '商品納入日', 1002, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'csv')");
            }
    
            // 受注CSV(csv_type_id = 3)に商品のお渡し日を追加
            $exist = $this->connection->fetchOne(
                "SELECT COUNT(*) FROM dtb_csv WHERE csv_type_id = 3 AND entity_name = ? AND field_name = 'item_handover_date' AND disp_name = '商品お渡し日'",
                ['Eccube\\Entity\\OrderItem']
            );
    
            if ($exist == 0) {
                $this->addSql("INSERT INTO dtb_csv (csv_type_id, creator_id, entity_name, field_name, disp_name, sort_no, enabled, create_date, update_date, discriminator_type) VALUES (3, 1, 'Eccube\\\\Entity\\\\OrderItem', 'item_handover_date', '商品お渡し日', 1003, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'csv')");
            }
        }
    
        public function down(Schema $schema): void
        {
            // ロールバック時は追加したCSV項目を削除
            $this->addSql("DELETE FROM dtb_csv WHERE csv_type_id = 3 AND entity_name = 'Eccube\\\\Entity\\\\Order' AND field_name = 'order_delivery_date' AND disp_name = '納入日'");
            $this->addSql("DELETE FROM dtb_csv WHERE csv_type_id = 3 AND entity_name = 'Eccube\\\\Entity\\\\Order' AND field_name = 'order_handover_date' AND disp_name = 'お渡し日'");
            $this->addSql("DELETE FROM dtb_csv WHERE csv_type_id = 3 AND entity_name = 'Eccube\\\\Entity\\\\OrderItem' AND field_name = 'item_delivery_date' AND disp_name = '商品納入日'");
            $this->addSql("DELETE FROM dtb_csv WHERE csv_type_id = 3 AND entity_name = 'Eccube\\\\Entity\\\\OrderItem' AND field_name = 'item_handover_date' AND disp_name = '商品お渡し日'");
        }
    }