だ。ログ。

開発とかスノボとかやきうとか。

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 が追加されており、内容が反映されている事を確認する。