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-CUBE3(Silex)ではApplication::getInstance()により$appオブジェクトを取得し、そこから$appとしてエンティティマネージャを呼び出していました。 それではEC-CUBE4(Symfony3)ではどのようにエンティティやレポジトリをマイグレーションで使用す...
XServerのSSH接続でPHP5.4ではなくPHP7を指定してbin/console実行... EC-CUBE4はphp7.1以上が必須要件になっており、bin/consoleスクリプトを使う場合はコマンドラインでもPHP7が必要です。 エックスサーバーのようにSSHが接続できるレンタルサーバーでも最初はPHPのバージョンが5.4となっています。ですので、下記の手順に従って、実行できるPHP...
デバッグモードを有効化する方法 .envファイル... EC-CUBE4系をデバッグモードで実行する方法をご紹介します。 デバッグモードとは? EC-CUBE4では通常エラーが発生しても「システムエラーが発生しました。大変お手数ですが、サイト管理者までご連絡ください。」と表示されるだけで原因が全く分かりません。 エラーの原因がユーザーに...
4系で管理画面に新規メニュー項目を追加する方法... 今回は商品管理の一番下に新規メニュー項目を追加することを考えます。 まずメニューから開けるページが必要ですのでコントローラーを作成し、新しいページを作った後でそのページをメニューに追加してみましょう。今回はeccube_nav.yamlを編集するもっとも簡単な方法をご紹介します。 管...