バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > Entity が保存できない

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2019/6/18 0:18
対応状況: 解決済
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 907
Entity が保存できない
EC-CUBE4.0.2

受注情報 Order に紐づく Sender Entity を作成したのですが、受注の登録時にエラーになってしまいます。

Multiple non-persisted new entities were found through the given association graph:

* A new entity was found through the relationship 'Eccube\Entity\Order#Sender' that was not configured to cascade persist operations for entity: トエビス テスト. To solve this issue: Either explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(..,cascade={"persist"}).

エラーの意味がわからずどうやったら解決できるかがわかりません。。

ソースを抜粋して記載します。

src/Eccube/Controller/Admin/Order/EditController.php
    public function index(Request $request, $id = null, RouterInterface $router)
    {
        $TargetOrder = null;
        $OriginOrder = null;
        $Sender = null;

        if (null === $id) {
            // 空のエンティティを作成.
            $TargetOrder = new Order();
            $TargetOrder->addShipping((new Shipping())->setOrder($TargetOrder));
        } else {
            $TargetOrder = $this->orderRepository->find($id);
            if (null === $TargetOrder) {
                throw new NotFoundHttpException();
            }

            if ($Customer = $TargetOrder->getCustomer()) {
                $Sender = $TargetOrder->getSender();
                if (null === $Sender) {
                    $Sender = new Sender();
                    $TargetOrder->setSender($Sender);
                    $Sender->setCustomer($Customer);
                }
            }
        }

        if ($form->isSubmitted() && $form['OrderItems']->isValid()) {

            // 登録ボタン押下
            switch ($request->get('mode')) {
                case 'register':
                    if (!$flowResult->hasError() && $form->isValid()) {

                        $this->entityManager->persist($TargetOrder);
                        $this->entityManager->flush();    // ★ ここでエラー発生

                        if ($Customer = $TargetOrder->getCustomer()) {
                            if ($Sender) {
                                $this->entityManager->persist($Sender);
                                $this->entityManager->flush();
                            }
                        }

                        return $this->redirectToRoute('admin_order_edit', ['id' => $TargetOrder->getId()]);
                    }

                    break;
            }
        }

        return [
            'form' => $form->createView(),
            'searchCustomerModalForm' => $searchCustomerModalForm->createView(),
            'searchProductModalForm' => $searchProductModalForm->createView(),
            'Order' => $TargetOrder,
            'id' => $id,
            'shippingDeliveryTimes' => $this->serializer->serialize($times, 'json'),
        ];
    }


src/Eccube/Form/Type/Admin/OrderType.php
        $Order = $options['data'];
        $Customer = $Order->getCustomer();
        if ($Customer) {
            $Sender = $this->senderRepository->findOneBy(['Customer' => $Customer]);

            $builder
                ->add('Sender', SenderType::class, [
                    'data' => $Sender,
                ])
            ;
        }


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2019/6/18 7:53
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 907
Re: Entity が保存できない
自己解決しました。

DBテーブルの親子関係がおかしかったです。
一部、ManyToOne と OneToMany の定義が逆になっていました。
テーブル構成を見直し、登録処理も FormType を使用せずリクエストから Entity に値を渡して保存することで解消しました。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

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


 



ログイン


EC-CUBEペイメント

ec-cube.co

統計情報

総メンバー数は49,358名です
総投稿数は93,177件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1967
4
468
1818
5
yuh
1602
6
red
1342
7
umebius
1296
8
fukap
907
9
h_tanaka
907
10
tsuji
856
11
shutta
835
12 ramrun 789
13
tao_s
774
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

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