バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > OneToOneリレーションのエラー

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yuy-tank
投稿日時: 2018/3/2 17:02
対応状況: 開発中
一人前
登録日: 2017/11/10
居住地:
投稿: 72
OneToOneリレーションのエラー
\Entity\PriceList,\Entity\PriceList2というエンティティがそれぞれあります。

PriceList と PriceList2はOneToOneのリレーションです。コントローラ側で、PriceListの更新とともに、PriceListとOneToOneの関係にあるPriceList2も更新させようと思い、以下のようにymlファイルにマッピング定義しました。



PriceList.dcm.yml

oneToOne:
PriceList2:
targetEntity: Plugin\PriceExpansion\Entity\PriceList2
cascade: ["persist","remove"]
mappedBy: PriceList


PriceList2.dcm.yml
oneToOne:
PriceList:
targetEntity: Plugin\PriceExpansion\Entity\PriceList
inversedBy: PriceList2
joinColumn:
name: price_list_id
referencedColumnName: price_list_id



ところが、新規登録をする場合は、PriceListのカラムの生成時にPriceList2も自動的にカラムが作成されるのですが、更新するときになると、エラーになります。
ちなみにエラーの内容は以下です。



UniqueConstraintViolationException in AbstractMySQLDriver.php line 66:
An exception occurred while executing 'INSERT INTO plg_price_list2 (price1, price2, price3, price4, price_list_id) VALUES (?, ?, ?, ?, ?)' with params ["A", "B", "C", "D", 8]:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '8' for key 'UNIQ_F8C67A015688DED7'



PriceListの中で、price_list_id が8のカラムを更新しようとしているのですが、エラーメッセージを読むと、どうやら重複するからいけないということになっているようです。データベースの更新は確かUPDATE文だった気がするので、INSERT文を実行しようとしていることに違和感を覚えます。よろしければ、間違っている箇所を教えてください。








umebius
投稿日時: 2018/3/4 9:53
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: OneToOneリレーションのエラー
PHPのコードの方を拝見しないとなんとも言えないところなのですが、
すでに$PriceListのPriceList2が登録されている場合も
new PriceList2()として新規登録しているということではないでしょうか?

すでにPriceList2が存在する場合は既存のPriceList2を取得して、更新してやる必要がございますが、いかがでしょうか。


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

yuy-tank
投稿日時: 2018/3/9 12:00
対応状況: −−−
一人前
登録日: 2017/11/10
居住地:
投稿: 72
Re: OneToOneリレーションのエラー
回答ありがとうございます。

既存のPriceList2を取得することで解決致しました!
ありがとうございました!
umebius
投稿日時: 2018/3/9 13:23
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: OneToOneリレーションのエラー
yuy-tank様

良かったです!
また何かございましたらご投稿ください。


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,711名です
総投稿数は109,949件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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