app/DoctrineMigrations/Version20250922050000.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 Version20250922050000 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return 'Convert maintenance tables datetime columns to datetimetz for timezone support';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         $schemaManager $this->connection->createSchemaManager();
  18.         
  19.         // テーブルが存在するかチェック
  20.         if (!$schemaManager->tablesExist(['dtb_maintenance_settings'])) {
  21.             return;
  22.         }
  23.         
  24.         if (!$schemaManager->tablesExist(['dtb_maintenance_school'])) {
  25.             return;
  26.         }
  27.         
  28.         // dtb_maintenance_settings テーブルの日時フィールドをdatetimetzに変更
  29.         $this->addSql('ALTER TABLE dtb_maintenance_settings 
  30.             MODIFY start_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetimetz)\',
  31.             MODIFY end_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetimetz)\',
  32.             MODIFY create_date DATETIME NOT NULL COMMENT \'(DC2Type:datetimetz)\',
  33.             MODIFY update_date DATETIME NOT NULL COMMENT \'(DC2Type:datetimetz)\'');
  34.         // dtb_maintenance_school テーブルの日時フィールドをdatetimetzに変更
  35.         $this->addSql('ALTER TABLE dtb_maintenance_school 
  36.             MODIFY start_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetimetz)\',
  37.             MODIFY end_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetimetz)\',
  38.             MODIFY create_date DATETIME NOT NULL COMMENT \'(DC2Type:datetimetz)\',
  39.             MODIFY update_date DATETIME NOT NULL COMMENT \'(DC2Type:datetimetz)\'');
  40.     }
  41.     public function down(Schema $schema): void
  42.     {
  43.         $schemaManager $this->connection->createSchemaManager();
  44.         
  45.         // テーブルが存在するかチェック
  46.         if (!$schemaManager->tablesExist(['dtb_maintenance_settings''dtb_maintenance_school'])) {
  47.             return;
  48.         }
  49.         
  50.         // dtb_maintenance_settings テーブルの日時フィールドをdatetimeに戻す
  51.         $this->addSql('ALTER TABLE dtb_maintenance_settings 
  52.             MODIFY start_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime)\',
  53.             MODIFY end_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime)\',
  54.             MODIFY create_date DATETIME NOT NULL COMMENT \'(DC2Type:datetime)\',
  55.             MODIFY update_date DATETIME NOT NULL COMMENT \'(DC2Type:datetime)\'');
  56.         // dtb_maintenance_school テーブルの日時フィールドをdatetimeに戻す
  57.         $this->addSql('ALTER TABLE dtb_maintenance_school 
  58.             MODIFY start_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime)\',
  59.             MODIFY end_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime)\',
  60.             MODIFY create_date DATETIME NOT NULL COMMENT \'(DC2Type:datetime)\',
  61.             MODIFY update_date DATETIME NOT NULL COMMENT \'(DC2Type:datetime)\'');
  62.     }
  63. }