<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
use Eccube\Entity\ClassName;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20250828022236 extends AbstractMigration
{
public function getDescription(): string
{
return 'Add country list to ClassCategory for Country (国)';
}
public function up(Schema $schema): void
{
$countryId = ClassName::$COUNTRY_ID;
// Kiểm tra xem ClassName với id = 1000 có tồn tại không
$existingClassName = $this->connection->fetchOne('SELECT id FROM dtb_class_name WHERE id = ?', [$countryId]);
if (!$existingClassName) {
$this->write('ClassName record with ID ' . $countryId . ' does not exist. Skipping country categories insertion.');
return;
}
// Danh sách các quốc gia
$countries = [
['name' => '日本', 'backend_name' => 'Japan', 'sort_no' => 1],
['name' => 'アメリカ', 'backend_name' => 'United States', 'sort_no' => 2],
['name' => '中国', 'backend_name' => 'China', 'sort_no' => 3],
['name' => '韓国', 'backend_name' => 'South Korea', 'sort_no' => 4],
['name' => 'イギリス', 'backend_name' => 'United Kingdom', 'sort_no' => 5],
['name' => 'フランス', 'backend_name' => 'France', 'sort_no' => 6],
['name' => 'ドイツ', 'backend_name' => 'Germany', 'sort_no' => 7],
['name' => 'イタリア', 'backend_name' => 'Italy', 'sort_no' => 8],
['name' => 'スペイン', 'backend_name' => 'Spain', 'sort_no' => 9],
['name' => 'カナダ', 'backend_name' => 'Canada', 'sort_no' => 10],
['name' => 'オーストラリア', 'backend_name' => 'Australia', 'sort_no' => 11],
['name' => 'ブラジル', 'backend_name' => 'Brazil', 'sort_no' => 12],
['name' => 'インド', 'backend_name' => 'India', 'sort_no' => 13],
['name' => 'ロシア', 'backend_name' => 'Russia', 'sort_no' => 14],
['name' => 'ベトナム', 'backend_name' => 'Vietnam', 'sort_no' => 15],
['name' => 'タイ', 'backend_name' => 'Thailand', 'sort_no' => 16],
['name' => 'シンガポール', 'backend_name' => 'Singapore', 'sort_no' => 17],
['name' => 'マレーシア', 'backend_name' => 'Malaysia', 'sort_no' => 18],
['name' => 'インドネシア', 'backend_name' => 'Indonesia', 'sort_no' => 19],
['name' => 'フィリピン', 'backend_name' => 'Philippines', 'sort_no' => 20],
];
$currentDateTime = date('Y-m-d H:i:s');
$insertedCount = 0;
foreach ($countries as $country) {
// Kiểm tra xem category đã tồn tại chưa
$existingCategory = $this->connection->fetchOne(
'SELECT id FROM dtb_class_category WHERE class_name_id = ? AND name = ?',
[$countryId, $country['name']]
);
if ($existingCategory) {
$this->write('ClassCategory for ' . $country['name'] . ' already exists. Skipping.');
continue;
}
// Thêm category mới
$this->addSql(
'INSERT INTO dtb_class_category (backend_name, name, sort_no, visible, create_date, update_date, class_name_id, creator_id, discriminator_type) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
[
$country['backend_name'], // backend_name
$country['name'], // name
$country['sort_no'], // sort_no
1, // visible (true)
$currentDateTime, // create_date
$currentDateTime, // update_date
$countryId, // class_name_id
1, // creator_id
'classcategory' // discriminator_type
]
);
$insertedCount++;
}
$this->write('Successfully added ' . $insertedCount . ' country categories for ClassName ID ' . $countryId);
}
public function down(Schema $schema): void
{
$countryId = ClassName::$COUNTRY_ID;
// Kiểm tra xem ClassName có tồn tại không
$existingClassName = $this->connection->fetchOne('SELECT id FROM dtb_class_name WHERE id = ?', [$countryId]);
if (!$existingClassName) {
$this->write('ClassName record with ID ' . $countryId . ' does not exist. Skipping country categories deletion.');
return;
}
// Xóa tất cả ClassCategory thuộc về ClassName này
$deletedCount = $this->connection->executeStatement(
'DELETE FROM dtb_class_category WHERE class_name_id = ?',
[$countryId]
);
$this->write('Successfully removed ' . $deletedCount . ' country categories for ClassName ID ' . $countryId);
}
}