バージョン選択

フォーラム

メニュー

オンライン状況

17 人のユーザが現在オンラインです。 (11 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 17
もっと...

サイト内検索

質問 > フロント機能 > 4系でマスターテーブルを追加する方法

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
jgjg
投稿日時: 2020/8/19 15:58
対応状況: 解決済
半人前
登録日: 2020/8/19
居住地:
投稿: 12
4系でマスターテーブルを追加する方法
[EC-Cube]4.0.4
[DB]MySQL

4系のマスターテーブルの追加手順について助けていただきたいです…

下記サイトを参考にさせていただいて、進めようと思っています。
https://yassu.jp/pukiwiki/index.php?EC-CUBE4%20%A5%DE%A5%B9%A5%BF%A5%C6%A1%BC%A5%D6%A5%EB%A4%CE%BA%EE%C0%AE

初歩的なところからわからないのですが(すみません)、この手順に従う場合、次のようにすればよいのでしょうか?
①DBに他マスタと同じ構造のテーブルを作成
CREATE TABLE `mtb_XXX` (
`id` smallint(5) unsigned NOT NULL,
`name` varchar(255) NOT NULL,
`sort_no` smallint(5) unsigned NOT NULL,
`discriminator_type` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

(discriminator_typeは自動で値が入るのでしょうか…)

②参考サイトと全く同じコマンドを実行
bin/console eccube:generate:proxies
bin/console doctrine:schema:update --dump-sql
bin/console doctrine:schema:update --dump-sql --force

③参考サイトと全く同じPHPファイルを作成
app/Customize/Form/Extension/MasterdataTypeExtension.php
(Customizeフォルダ以下にFormフォルダがないのですが、同じディレクトリになるようにMasterdataTypeExtension.phpを置けばよいでしょうか…?

よろしくお願いいたします…
最終的には、以下の質問のRongoさんの回答の内容を再現したいです(注文ページのお届け日・またお届け日時の制限)
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=21660&forum=10



kenshi
投稿日時: 2020/8/20 11:52
対応状況: −−−
常連
登録日: 2020/6/29
居住地:
投稿: 45
Re: 4系でマスターテーブルを追加する方法
マスターテーブルの追加方法は2種類あります。

参考にされているサイトの方法は
1.Entityクラスに項目を追加しコマンドでデータベースに反映する方法

私の書いている記事(途中)参考になれば幸いです。
https://leveliving.com/tec/php/ec-cube/develop/

Entityクラスに項目を追加しコマンドでデータベースに反映する方法

Entityはアノテーションで項目追加する情報を持ちます。

コマンドで作成可能です。
bin/console make:entity

Entityが出来たら、②で行けると思います。

③も同じようにフォルダ作っておけば大丈夫だと思います。
jgjg
投稿日時: 2020/8/20 15:37
対応状況: −−−
半人前
登録日: 2020/8/19
居住地:
投稿: 12
Re: 4系でマスターテーブルを追加する方法
Kenshiさん、ご回答ありがとうございます!

①のようなSQLで直接テーブルを作成せず、
「bin/console make:entity XXX(作りたいEntityクラス名?)」コマンドを実行し、作成されたXXX.phpを編集して、このEntityをもとにテーブルを作成するということでしょうか?

bin/console make:entity closedate とコマンドを流しましたが、
There are no commands defined in the “make” namespace.とエラーが出ました。

以下のサイトを参考に 
composer require doctrine maker とコマンドを流した後、
bin/console make:entity closedate をしましたが、結果は同じでした。
https://www.it-swarm.dev/ja/php/symfony%E3%81%AB%E3%81%AF%E3%80%8Cmake%E3%80%8D%E5%90%8D%E5%89%8D%E7%A9%BA%E9%96%93%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%95%E3%82%8C%E3%81%9F%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93/836756568/

調べながら進めていますが、わからなくなってしまいました…
すみませんが、kenshiさん、またはどなたかご助言いただけると幸いです…

t.kane
投稿日時: 2020/8/20 16:29
対応状況: −−−
新米
登録日: 2020/8/17
居住地:
投稿: 5
Re: 4系でマスターテーブルを追加する方法
ちょうど私もマスターテーブルを追加する機会があったので返信させていただきます。

私はチケットの仕様可/使用済のパラメータを登録するようなテーブルを作成しました。
jgjgさんも参考にされている[https://yassu.jp/pukiwiki/index.php?EC-CUBE4%20%A5%DE%A5%B9%A5%BF%A5%C6%A1%BC%A5%D6%A5%EB%A4%CE%BA%EE%C0%AE]
をもとに進めています。

①まずテーブルを作成します。jgjgさんが作成した通りのクエリを走らせれば大丈夫です。

②次にCustomize\Entity\Masterに目的のEntityを作成、Customize\Repository\Masterに同様にRepositoryを作成してください。
※Entitiy、Repository以降のフォルダがない場合は新たに作成してください。

コードは以下の通りです。
Customize\Entity\Master\[Entity名].php
<?php

namespace Customize\Entity\Master;
use Doctrine\ORM\Mapping as ORM;

/** 
 * @ORM\Table(name="mtb_[Entity名]")
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="discriminator_type", type="string", length=255)
 * @ORM\HasLifecycleCallbacks()
 * @ORM\Entity(repositoryClass="Customize\Repository\Master\[Repository名]")
 * @ORM\Cache(usage="NONSTRICT_READ_WRITE")
 */
class [Entity名] extends \Eccube\Entity\Master\AbstractMasterEntity
{
}


Customize\Repository\Master\[Repository名].php
<?php

namespace Customize\Repository\Master;

use Customize\Entity\Master\[Entity名];
use Eccube\Repository\AbstractRepository;
use Symfony\Bridge\Doctrine\RegistryInterface;

class [Repository名] extends AbstractRepository
{
    public function __construct(RegistryInterface $registry)
    {
        parent::__construct($registry, [Entity名]::class);
    }
}


③管理画面のマスターテーブル管理メニューで追加したマスターテーブルが表示されるように
app/Customize/Form/Extension/MasterdataTypeExtension.phpをサイトの通りに作成します。
※Form以降のフォルダがない場合は新たに作成してください。
※作成し終わったら念のため以下のコマンドでキャッシュの削除をしておくと良いかもしれません。
php bin\console cache:clear --no-warmup


参考になれば幸いです。
長々と失礼しました。
jgjg
投稿日時: 2020/8/22 9:36
対応状況: −−−
半人前
登録日: 2020/8/19
居住地:
投稿: 12
Re: 4系でマスターテーブルを追加する方法
t.kaneさん!!ありがとうございます!

t.kaneさんの手順通りに進めたところ、無事にマスタテーブル作成・管理画面表示ができました。
ありがとうございます!

kenshiさん、t.kaneさん、ありがとうございました!
(kenshiさんの記事も参考にさせていただきます!)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は67,359名です
総投稿数は98,735件です

投稿数ランキング

1
seasoft
7333
2
AMUAMU
2712
3
468
2684
4
nanasess
2114
5
umebius
1786
6
yuh
1612
7
red
1426
8
h_tanaka
1051
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.