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開発をぜひ実現してみてください!

ECCUBE制作トップへ

EC-CUBEカスタマイズに関するお問い合わせはこちら


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ