<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* セット商品の購入制限機能のためのマイグレーション
* dtb_set_productテーブルにpurchase_limitフィールドを追加
*/
final class Version20260119000000 extends AbstractMigration
{
public function getDescription(): string
{
return 'dtb_set_productテーブルにpurchase_limit(integer)を追加';
}
public function up(Schema $schema): void
{
// purchase_limitカラムが存在するかチェック
$schemaManager = $this->connection->createSchemaManager();
$columns = $schemaManager->listTableColumns('dtb_set_product');
$hasPurchaseLimit = false;
foreach ($columns as $column) {
if ($column->getName() === 'purchase_limit') {
$hasPurchaseLimit = true;
break;
}
}
// purchase_limitカラムが存在しない場合のみ追加
if (!$hasPurchaseLimit) {
$this->addSql('ALTER TABLE dtb_set_product ADD purchase_limit INT UNSIGNED DEFAULT NULL');
}
}
public function down(Schema $schema): void
{
// purchase_limitカラムが存在する場合のみ削除
$schemaManager = $this->connection->createSchemaManager();
$columns = $schemaManager->listTableColumns('dtb_set_product');
$hasPurchaseLimit = false;
foreach ($columns as $column) {
if ($column->getName() === 'purchase_limit') {
$hasPurchaseLimit = true;
break;
}
}
if ($hasPurchaseLimit) {
$this->addSql('ALTER TABLE dtb_set_product DROP COLUMN purchase_limit');
}
}
}