ECCUBE3でのマイグレーションファイルによるテーブルへの項目追加方法をご紹介します。

phpMyAdminやAdminerで追加してもかまいませんが、Migrationファイルを作成して実行すればGitで管理しメンバー間でデータベースの状態を共有可能であることや、再インストール時に自動で適用されるなど様々なメリットがあります。

弊社では効率的な開発のためにテーブルの追加/削除・列の追加/削除だけでなく、ブロックの追加や配置変更、EC-CUBEの設定変更などは必ずマイグレーション作成によって行うことを徹底しています。

※ただし本番で使用するレンタルサーバーによってはそもそもSSH接続ができないなどの理由でMigrationが実行できない場合もあります。ゆくゆくは管理画面からも実行できると良いなと思います。

実際の手順

まずはターミナル(Mac)でマイグレーション生成コマンドを実行します。

すると/src/Eccube/Resource/doctrine/migration/ディレクトリ内にVersion20170321092503.phpのようなファイルが作成されます。

今回はこのファイルを編集して受注詳細テーブル(dtb_order_detail)へpendingというカラムを追加する方法をご紹介します。タイプはboolean(smallint)にします。

 

upメソッド

upメソッドにはカラムを追加するコードを記述します。$schema->getTable()でテーブルインスタンスを取得し、$table->addColumn()で列を追加しています。

downメソッド

downメソッドの中にカラムを削除するコードを記述します。(コマンドで元に戻したい時のために)

マイグレーションの実行

ターミナルでマイグレーションを実行します。

dtb_order_detailテーブルにpendingカラムが追加されていることをご確認ください。

マイグレーションの取り消し

マイグレーションを取り消して元の状態へ戻したい時は次のコマンドを実行します。

dtb_order_detailテーブルからpendingカラムが削除されています。

 

基本的な使用方法は以上になります。

DBの変更をマイグレーションで行うようにすれば開発効率を上げる、バグを減らすなどの効果が見込めますのでぜひお試しください。

参考サイト:http://symfony.com/doc/current/doctrine.html

関連するカスタマイズ

バックアップ・復元方法 EC-CUBE3のバックアップ EC-CUBEはECサイトを運営するためのものですので、バックアップが何よりも重要です。 もし何らかの問題が発生し顧客データが失われたらと考えると...私は夜も眠れません。 特に重要なことはデータベースの定期バックアップを取ることです。 デ...
Doctorineで設定できるフィールドタイプ... EC-CUBE3が採用しているSymfonyの標準ORM、Doctorineで設定できるフィールドタイプをまとめました。 EC-CUBE3で開発するならこれはもう覚えちゃっても良いかもしれませんね。 dcm.ymlやマイグレーションで頻繁に使いますからね。 stringやintegerのよ...
送信メールテンプレートの追加方法 dtb_mail_template... ECCUBE3では、送信メールのテンプレートはデータベースのdtb_mail_templateテーブルによって管理されています。 なので、このテーブルにデータを追加してやることでテンプレートをいくらでも増やすことができます。 今回は発送連絡用のメールテンプレートを追加してみます。 dtb_...
注文確認画面のお届け日を変更する方法... 結論 : ShoppingServiceのgetFormDeliveryDates()を確認する。 config.ymlでdeliv_date_end_maxを設定すると表示される選択肢の日数を変更できる。 注文時に選択可能なお届け日を調整する方法をご紹介します。 この選択可能な日付のリス...

弊社はEC-CUBE公式インテグレートパートナーです。

カスタマイズやプラグイン開発お任せください