<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* 受験者情報呼び出し機能のためのマイグレーション
* 受験者情報テーブル (dtb_examinee_info) を追加
*/
final class Version20260113000000 extends AbstractMigration
{
public function getDescription(): string
{
return '受験者情報テーブル (dtb_examinee_info) を追加';
}
public function up(Schema $schema): void
{
$schemaManager = $this->connection->createSchemaManager();
// 受験者情報テーブルが存在しない場合のみ作成
if (!$schemaManager->tablesExist(['dtb_examinee_info'])) {
$this->addSql('CREATE TABLE dtb_examinee_info (
id INT AUTO_INCREMENT NOT NULL,
school_id INT UNSIGNED NOT NULL,
examinee_number VARCHAR(50) NOT NULL COMMENT "受験番号",
birth_date DATE NOT NULL COMMENT "生年月日",
name01 VARCHAR(255) DEFAULT NULL COMMENT "お名前(姓)",
name02 VARCHAR(255) DEFAULT NULL COMMENT "お名前(名)",
kana01 VARCHAR(255) DEFAULT NULL COMMENT "お名前(セイ)",
kana02 VARCHAR(255) DEFAULT NULL COMMENT "お名前(メイ)",
postal_code VARCHAR(8) DEFAULT NULL COMMENT "郵便番号",
pref VARCHAR(255) DEFAULT NULL COMMENT "都道府県",
addr01 VARCHAR(255) DEFAULT NULL COMMENT "住所1",
addr02 VARCHAR(255) DEFAULT NULL COMMENT "住所2",
phone_number VARCHAR(14) DEFAULT NULL COMMENT "電話番号",
create_date DATETIME NOT NULL COMMENT "作成日時",
update_date DATETIME NOT NULL COMMENT "更新日時",
PRIMARY KEY(id),
UNIQUE INDEX unique_examinee (school_id, examinee_number, birth_date),
INDEX IDX_examinee_info_school (school_id)
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_general_ci` ENGINE = InnoDB');
// 外部キー制約を追加
$this->addSql('ALTER TABLE dtb_examinee_info
ADD CONSTRAINT FK_examinee_info_school
FOREIGN KEY (school_id) REFERENCES dtb_school (school_id) ON DELETE CASCADE');
}
}
public function down(Schema $schema): void
{
$schemaManager = $this->connection->createSchemaManager();
// テーブルが存在する場合のみ削除
if ($schemaManager->tablesExist(['dtb_examinee_info'])) {
// 外部キー制約を削除
$this->addSql('ALTER TABLE dtb_examinee_info DROP FOREIGN KEY FK_examinee_info_school');
// テーブルを削除
$this->addSql('DROP TABLE dtb_examinee_info');
}
}
}