<?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)\'');
}
}