app/DoctrineMigrations/Version20250922050000.php line 1

Open in your IDE?
  1. <?php
    
    declare(strict_types=1);
    
    namespace DoctrineMigrations;
    
    use Doctrine\DBAL\Schema\Schema;
    use Doctrine\Migrations\AbstractMigration;
    
    /**
     * メンテナンス設定のタイムゾーン対応
     */
    final class Version20250922050000 extends AbstractMigration
    {
        public function getDescription(): string
        {
            return 'Convert maintenance tables datetime columns to datetimetz for timezone support';
        }
    
        public function up(Schema $schema): void
        {
            $schemaManager = $this->connection->createSchemaManager();
            
            // テーブルが存在するかチェック
            if (!$schemaManager->tablesExist(['dtb_maintenance_settings'])) {
                return;
            }
            
            if (!$schemaManager->tablesExist(['dtb_maintenance_school'])) {
                return;
            }
            
            // dtb_maintenance_settings テーブルの日時フィールドをdatetimetzに変更
            $this->addSql('ALTER TABLE dtb_maintenance_settings 
                MODIFY start_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetimetz)\',
                MODIFY end_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetimetz)\',
                MODIFY create_date DATETIME NOT NULL COMMENT \'(DC2Type:datetimetz)\',
                MODIFY update_date DATETIME NOT NULL COMMENT \'(DC2Type:datetimetz)\'');
    
            // dtb_maintenance_school テーブルの日時フィールドをdatetimetzに変更
            $this->addSql('ALTER TABLE dtb_maintenance_school 
                MODIFY start_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetimetz)\',
                MODIFY end_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetimetz)\',
                MODIFY create_date DATETIME NOT NULL COMMENT \'(DC2Type:datetimetz)\',
                MODIFY update_date DATETIME NOT NULL COMMENT \'(DC2Type:datetimetz)\'');
        }
    
        public function down(Schema $schema): void
        {
            $schemaManager = $this->connection->createSchemaManager();
            
            // テーブルが存在するかチェック
            if (!$schemaManager->tablesExist(['dtb_maintenance_settings', 'dtb_maintenance_school'])) {
                return;
            }
            
            // dtb_maintenance_settings テーブルの日時フィールドをdatetimeに戻す
            $this->addSql('ALTER TABLE dtb_maintenance_settings 
                MODIFY start_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime)\',
                MODIFY end_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime)\',
                MODIFY create_date DATETIME NOT NULL COMMENT \'(DC2Type:datetime)\',
                MODIFY update_date DATETIME NOT NULL COMMENT \'(DC2Type:datetime)\'');
    
            // dtb_maintenance_school テーブルの日時フィールドをdatetimeに戻す
            $this->addSql('ALTER TABLE dtb_maintenance_school 
                MODIFY start_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime)\',
                MODIFY end_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime)\',
                MODIFY create_date DATETIME NOT NULL COMMENT \'(DC2Type:datetime)\',
                MODIFY update_date DATETIME NOT NULL COMMENT \'(DC2Type:datetime)\'');
        }
    }