質問 > 管理機能 > 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を取得して、更新してやる必要がございますが、いかがでしょうか。
|
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様
良かったです! また何かございましたらご投稿ください。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |