EC-CUBE / EC-CUBE/ec-cube

dtb_product_stockとdtb_product_classのリレーションがEntityの定義通り作られていない

Open
#4,476 0 comments 0 reactions 0 assignees View on GitHub
Status: discussion
Dominant language
PHP
Stars
788
Forks
719
Avg merge
4d 4h
Merged PRs (30d)
39

Description

## 概要(Overview)

DoctrineのEntity定義的にはdtb_product_stockとdtb_product_classは1対1で外部キー制約を貼るように記述されています。しかし実際のDB上ではdtb_product_stockからdtb_product_classへの外部キーは貼られていますが、dtb_product_classからdtb_product_stockへの外部キーは貼られていません。
そのため管理ツールより商品規格のvisibleをfalseにした後trueにすると同じproduct_class_idで複数のdtb_product_stockレコードが作成されてしまいます。実際の動作には影響しませんが、DoctrineのEntity定義とは違うデータ構造とデータが作成されてしまっています。

DoctrineのEntity定義を以下に貼っておきます
https://github.com/EC-CUBE/ec-cube/blob/ed96ec6db606510a2cb045ac3a07da89ce3fbd4d/src/Eccube/Entity/ProductClass.php#L262-L267
https://github.com/EC-CUBE/ec-cube/blob/ed96ec6db606510a2cb045ac3a07da89ce3fbd4d/src/Eccube/Entity/ProductStock.php#L92-L100

## 期待する内容(Expect) or 要望 (Requirement)

期待する内容としてはdtb_product_classとdtb_product_stockが1対1でリレーションが作成されるものと思いますが、実際は1対多で作成されています。どちらが正しいのでしょうか?

## 再現手順(Procedure)

Webインストーラー経由でDBの初期化を行う

### 環境 (environment)

+ EC-CUBE: 4.0.1
+ PHP: 7.2.24
+ DB:
- MySQL 5.7系

## 関連情報 (Ref)

こちらのissueが内容的には似ているように見えましたが、報告時期的にEC-CUBE3系のものだと思われたので新規に作成しました。 https://github.com/EC-CUBE/ec-cube/issues/2003

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.