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

・コマンドで作成する
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ファイルで行うことです。その理由としてはショップ設定やブロック配置の統一です。...
新しくテーブルを作ってエンティティと関連づける方法... 今回は非常に要望が多かった新しいテーブルを作ってエンティティとしてデータ取得をできるようにする方法をご紹介します。 この方法は3系のもので、まもなくリリースされるEC-CUBE4系では利用できませんのでご注意ください。 データベースの作成 ドクトリン定義ファイルの作成(dcm....
商品一覧のページネーションに「最初へ」「最後へ」を表示する方法... 商品一覧ページのページネーションはProduct/list.twigを見るとpagination.twigをインクルードすることで表示されています。 pagination.twigをのぞいて見ると「最後へ」の部分は次のようなコードが書かれています。 このリンクを表示するにはconfi...