php – Symfony2将实体对象序列化为会话
我想将一个实体对象保存到会话中,但正如我所做的那样,我得到以下两个错误:
和
我的代码如下: $offer = $this->getEntityManager()->getRepository('KkuponMainBundle:Offer')->find($offer_id); $request->getSession()->set('offer',$offer); 我该如何得到它正确? 谢谢. UPDATE <?php $offer = $this->get('session')->get('offer'); $coupon = new Coupon(); $coupon->setOffer($offer); $this->em->persist($coupon); $this->em->flush(); 这引发了一个错误,因为优惠券有一个对象属性,根据EntityManager不在数据库中(实际上是在DB中,我将数据库放在会话中). <?php $offer = $this->get('session')->get('offer'); echo $this->em->getUnitOfWork()->isInIdentityMap($offer) ? "yes":"no"; //result: no 一个解决方案可以是: 但这似乎不是最好的一个.我希望我的EntityManager能够感知存储在会话中的实体对象,而不是每次都通知它.
您可以通过将其所有属性和关系从private设置为protected来序列化任何实体.
即使将所有属性设置为protected,您也可能遇到symfony2的常见问题:您必须重新生成已更改的实体的代理.为此,只需清除缓存.对于开发环境: app / console cache:clear 即使它说“它包含很多异物,甚至包含外来实体的ArrayCollections”,它也可以工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |