EC-CUBE3(Silex)ではApplication::getInstance()により$appオブジェクトを取得し、そこから$app[‘orm.em’]としてエンティティマネージャを呼び出していました。
それではEC-CUBE4(Symfony3)ではどのようにエンティティやレポジトリをマイグレーションで使用するのでしょうか?

結論から言うとマイグレーションファイルにContainerAwareInterfaceを実装することでcontainerを使用することができるようになり、レポジトリクラスのオブジェクトを取得できます。

実装方法

ContainerAwareInterfaceをimplementsし、実装したsetContainerメソッド内でコンテナを保持します。
postUpメソッド内でcontainerやentity managerを利用してレポジトリ・エンティティを呼び出します。

マイグレーションで送料無料条件を設定する例

次の例では送料無料条件(金額)を10,800円に設定するEC-CUBE4のマイグレーションです。
BaseInfoのレポジトリ・エンティティを利用してショップ設定を更新しています。

 

関連するカスタマイズ

マイグレーションの作成・実行方法 EC-CUBE4ではマイグレーションに関する考え方がEC-CUBE3から変更されています。 カラムの追加などはマイグレーションを使用せずに同期するようなっています。 ただ設定項目の変更やデータの変更は引き続きマイグレーションで行うべきと考えていますので、マイグレーションの作成・実行方法をご紹介し...
エックスサーバーインストール時のInternal Server Error... ※この記事はEC-CUBE4.0.1時点のものとなります。 EC-CUBEやCMSに強いレンタルサーバーの代表格としてあげられるのがエックスサーバーです。 2019年1月現在ではまだEC-CUBE4の簡単インストールは用意されておらず、オーナーズストアからソースをダウンロードしてインストールする...
「mod_rewrite が有効になっているか不明です。」... EC-CUBE4をインストールする際に「mod_rewrite が有効になっているか不明です。」という警告が表示されることがあります。 黄色背景で表示されるのでドキッとしますが、レンタルサーバーの場合ほとんど気にする必要はありません。 (下の画像のように黄色背景で警告が表示されます。...
Twig内で文字列の一部分を切り出す方法 Slice使用... twigテンプレート内で文字列の一部を切り出したい時があります。 そんな時はsliceフィルタを使用してtwig内だけで切り出しを実行することが可能です。 2文字目以降を切り出す(1文字目を削除) sliceフィルタの第1引数は開始位置です。 sliceフィルタにはシンタックスシ...