マイグレーション作成方法

・コマンドで作成する
php app/console migrations:generate

・phpファイルを手動で作成する
次のファイルを src/Eccube/Resource/doctrine/migration/Version20180412171816.php の場所に作成します。

upメソッドの中にマイグレーションが実行された時に実行したい内容をSQL等で指定します。
downメソッドの中にマイグレーションが巻き戻された時に実行したい内容をSQL等で指定します。

例えばupメソッドは下記のようになります。

・SQL文を実行する例(おすすめ商品を登録)

 

・Entityを使用する例(ページの名前を変更)

 

マイグレーションの実行・巻き戻し

作成したマイグレーションを実行するには実行コマンドを打ちます。
upメソッドの内容が実行され、マイグレーションの実行が記録されます。

実行していないマイグレーションをすべて実行するには、
php app/console migrations:migrate

ファイルを指定して実行するには
php app/console migrations:execute 20180412171816 –up

ちなみにマイグレーションを巻き戻すには
php app/console migrations:execute 20180412171816 –down
この場合downメソッドの内容が実行され、マイグレーション「20180412171816」は未実行の状態になります。

マイグレーションファイルを使用するメリットは

マイグレーションによりデータベースの内容を変更することで、環境間のデータの差異をなくすことができます。

開発環境とステージング環境で設定を揃えたい時、ブロックの配置を何度も行いたくない場合に有効です。

Gitに登録して環境を揃えられるのでチーム開発では必須です。

関連するカスタマイズ

商品種別の名称を変更する方法 EC-CUBEで良くわからないと言われる項目の1つに商品種別があります。 商品種別の価値は配送方法を分離するために存在するのですが、カートや複数配送のカスタマイズと絡むと非常に難しく、大抵のサイトでは商品種別は1つだけしか使用しないことが無難だと思います。 もし使用したい場合も「商品...
MIgrationファイルのSQLでプレースホルダを使用する... 突然ですが、皆さんは開発の際にMigrationファイル作成していますでしょうか? DBをphpMyAdminなどで直接編集していますでしょうか? 弊社のオススメは要件上重要な設定の変更やデータの挿入はMigrationファイルで行うことです。その理由としてはショップ設定やブロック配置の統一です。...
Your proxy directory “/var/www/src/Eccube/..... SSHからマイグレーションなどapp/consoleのコマンドを実行しようとした際に、ドクトリンのキャッシュファイルを書き込めないために発生するエラーです。 通常app/cache/doctrine/proxiesは所有者もグループもapacheとなるため、コマンドラインから他のユーザ...
マイグレーションファイル内でエンティティを使用する方法... EC-CUBE3(Silex)ではApplication::getInstance()により$appオブジェクトを取得し、そこから$appとしてエンティティマネージャを呼び出していました。 それではEC-CUBE4(Symfony3)ではどのようにエンティティやレポジトリをマイグレーションで使用す...