質問 > 管理機能 > Doctorineについて |
管理機能
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
yuy-tank |
投稿日時: 2017/11/24 14:42
対応状況: −−−
|
一人前 登録日: 2017/11/10 居住地: 投稿: 72 |
Doctorineについて $app['eccube.service.cart'] (中身は\Eccube\Service\CartService) に格納されているオブジェクトAを編集するために、プラグインからサービスプロバイダでPimpleのextend()、share()を用いて編集しました。
しかし、このオブジェクトAは、\Eccube\Service\CartServiceにて、エンティティマネージャからgetRepository()、find()を用いて、DBからEntityオブジェクトとして取得されたものが格納されており、実際にサービスプロバイダでこのオブジェクトAに変更を加えると、あるページでは、$app['eccube.service.cart']を呼び出した後にflush()されているためか、DBが更新されてしまいます。 具体的には、カートで購入手続きを行う際、 CartController::index (SHOPPING CART) → CartController::buystep (ログインかゲスト購入の選択) → ShoppingController::index (ご注文内容のご確認) と手順を踏むのですが、ShoppingController::indexページに行くと、DBが更新されてしまいます。(おそらくflush()されているため) getRepository()、find()を用いてDBからEntityオブジェクトを取得すると、それがDoctorineによって追跡されるらしいのですが、 この追跡を止める方法はないでしょうか?そもそもgetRepository()から取得したものは編集しないほうがよいのでしょうか? |
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
» Doctorineについて | yuy-tank | 2017/11/24 14:42 |
Re: Doctorineについて | umebius | 2017/11/24 21:54 |