EC-CUBE4ではマイグレーションに関する考え方がEC-CUBE3から変更されています。
カラムの追加などはマイグレーションを使用せずに同期するようなっています。
ただ設定項目の変更やデータの変更は引き続きマイグレーションで行うべきと考えていますので、マイグレーションの作成・実行方法をご紹介します。
良く使うMigrationコマンド
マイグレーションの作成方法
php bin/console doctrine:migrations:generate
マイグレーションの実行方法
php bin/console doctrine:migrations:migrate
マイグレーションの実行方法(ファイルを指定)
php bin/console doctrine:migrations:execute 20190106043953 –up
作成されるファイルの内容
doctrine:migrations:generateにより、マイグレーションファイルがapp/DoctrineMigrations/Version20190106043953.phpのように生成されます。
ファイルの内容は次のようになっています。
<?php declare(strict_types=1); namespace DoctrineMigrations; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; use Eccube\Entity\Layout; /** * Auto-generated Migration: Please modify to your needs! */ final class Version20190106043953 extends AbstractMigration { public function up(Schema $schema) : void { // this up() migration is auto-generated, please modify it to your needs } public function down(Schema $schema) : void { // this down() migration is auto-generated, please modify it to your needs } }
Migration具体例(ブロック移動)
EC-CUBE4でもUPメソッド内に実行したいSQLコマンドを記載すればOKです。
例えばカテゴリーブロック(PC)を左サイドバーに移すマイグレーションは次のようになります。
public function up(Schema $schema) : void { $this->addSql("UPDATE dtb_block_position SET section = :section, block_row = :block_row WHERE block_id IN (2,3)", [ 'section' => Layout::TARGET_ID_SIDE_LEFT, 'block_row' => 1, ]); }
マイグレーションを使って効率的なEC-CUBE4開発をぜひ実現してみてください!
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。