EC-CUBE3

EC-CUBE3.0.15でCSV出力の項目を増やした話

EC-CUBEには会員情報や受注情報のCSV出力機能がありますが、CSV項目の追加削除については管理画面から設定することができません。

前もって…

本記事の内容はシステムに直接影響を与える操作を含んでいます。EC-CUBE3やソフトウェアに見識がない方が行うとシステムが動作しなくなる可能性もあります。作業は自己責任で行い、記事内の説明で理解が及ばない場合は操作を中止してください。E.P.ラボは一切の責任を負いません。

管理画面で変更できるのは出力対象の可否と順番のみ

会員や受注情報のCSV出力項目はあらかじめ決まっており、ユーザーができる事はリストに出力するか否かだけです。
しかし、これは管理画面内でのこと。

DBを直接操作することで項目を増やすことも減らすこともできます。

phpMyAdminから操作する

よほどの特別仕様でもない限りMySQLをご利用かと思います。phpMyAdminを利用してDBに接続しましょう。

phpMyAdminは契約サーバーごとにアクセス方法が異なると思います。こちらもご自身の責任で実施ください。

対象tableを探そう

CSVに関するデータが格納されているテーブルは「dtb_csv」です

構成と内容は下記の通り。

SELECT
	`csv_id`				全体の通し番号
	`csv_type`				CSV出力分類番号
	`creator_id`			1で固定
	`entity_name`			対象Entity
	`field_name`			対象field
	`reference_field_name`	fieldがclassの場合プロパティ名を指定
	`disp_name`				表示名
	`rank`					並び順(csv_type内で通し番号)
	`enable_flg`			有効フラグ
	`create_date`			作成日
	`update_date`			更新日
FROM `dtb_csv` 

出力項目を増やしてみる

実際にCSV出力可能な対象はEntityに登録されているメンバのみです。
つまり、CSV項目を追加するためには事前にEntityのメンバを拡張する必要があります。

仮に会員情報に部署情報を付加し、会員情報CSVに出力させようとすると

  1. マイグレーションで部署カラムの追加
  2. Customer EntityにSection(部署)メンバを追加
  3. Formの修正(新規登録用のフォーム改修)
  4. DB直接操作でdtb_csvに部署を追加
  5. 管理画面のCSV出力設定から出力の可否、順番を設定

のような手順を踏む必要があります。

会員情報CSV出力のようにEntityにメンバを追加した場合{entity_name}にクラス名、{field_name}にフィールド名(プロパティ名)を記載します。

受注情報CSV出力の場合、{field_name}が会員情報になっています。子フィールド(子プロパティ)にアクセスするには{reference_field_name}に指定します。

最後に

あとは会員情報へ追加項目の実データがあればCSVに出力されるようになります。
マイグレーションしたときに、新規追加列はnull許可していると思われます。null値ではCSV出力したときにデータが無いように見えますので、データが入力されていることを確認されてからテストを行ってください。

ABOUT ME
Nozomu.Kon
トータルソフトウェアコーディネーターがあなたのお困りを即時に解決!