EC-CUBE3でマスターデータを追加する
データベース知識を有してる事が前提
管理画面>設定>システム情報設定>マスターデータ管理にプルダウンで新しいマスタデータを作りたい。
昔のEC-CUBE2の時代は簡単に出来たハズだったけど、色々と変わってしまったので追加手順のまとめ
1.DBに必要となるテーブルの作成
mtb_hogehoge と言う新しいマスタデータテーブルを作成する。
他のmtbテーブルと同じ形式に合わせて、必要となるマスタデータを入れ込んでSQLを実行する。
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; CREATE TABLE `mtb_hogehoge` ( `id` smallint(6) NOT NULL, `name` longtext, `rank` smallint(6) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `mtb_hogehoge` (`id`, `name`, `rank`) VALUES (1, 'いち', 0), (2, 'にー', 1);
これでテーブルの用意は完了。その辺のテーブルをdumpして出せば良い。
2.実体ファイルの作成
/src/Eccube/Entity/Master/
上記のディレクトリの適当なファイルをコピーしてリネームする。
今回の例でいけば Hogehoge.phpと言う名前で保存。
class Hogehoge extends /Eccube/Entity/AbstractEntity
クラス宣言の所をマスタデータ名に変更
3.リポジトリの作成
/src/Eccube/Repository/Master
上記のディレクトリから適当なファイルをコピーしてリネームする。手順2と同じ。
HogehogeRepository.phpと言う名前で保存。
class HogehogeRepository extends EntityRepository
クラス宣言の所をマスタデータ名に変更。これも手順2と同じ
4.テーブル定義ファイルを作成する
/src/Eccube/Resource/doctrine/master
周りのマスタデータファイルをコピーしてファイルを作成、Eccube.Entity.Master.Hogehoge.dcm.yml として保存。
定義部分の修正
Eccube\Entity\Master\Hogehoge: type: entity table: mtb_hogehoge repositoryClass: Eccube\Repository\Master\HogehogeRepository
実体ファイル、リポジトリ、テーブルをそれぞれ作成した対象に書き換える。
ここまで出来たら
管理画面>設定>システム情報設定>マスターデータ管理 にアクセスしマスターデータのプルダウンに
mtb_hogehoge が追加されており、内容が反映されている事を確認する。