0

doctrine2のentity_managerからオブジェクトを切り離してセッションに入れようとしていますが、機能しません。協会があるときではありません。

元:

<?php
namespace Travelyo\CoreBundle\Entity\Order;
use Doctrine\ORM\Mapping as ORM;
/**

 *     @ORM\Table(name="bundles")
 *    /
class Bundle 
{
/**
 * @var integer $id
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @ORM\ManyToOne(targetEntity="Order", inversedBy="orders",cascade={"detach","merge","remove"})
 * @ORM\JoinColumn(name="order_id", referencedColumnName="id")
 */
private $order;
 }

他に順番の関係はありません。

しかし、私がそれをしようとしているとき

$em = $this->getDoctrine()->getEntityManager();
$bundle = $em->getRepository('TravelyoCoreBundle:Order\Bundle')->find(27);
$em->detach($bundle);
$em->detach($bundle->order);
serialize($bundle);

それは機能していません、私はすべてのオブジェクトの依存関係、プロキシ、...を持っています

$ bundle-> setOrder(new Order());をデタッチする前にそれを行っている場合。

その後、シリアル化は完璧です、私はただバンドルを持っています。

ここで何が欠けていますか?

4

1 に答える 1

1

オブジェクトが切り離されている場合でも、オブジェクトの作成に使用された教義コンポーネントへの参照があります。

簡単なアドバイスとして、代わりにオブジェクト識別子をシリアル化するように指示できます。これははるかにクリーンであり、反対側(シリアル化解除部分)でクエリを実行する必要がありますが、多くの問題を回避できます。

エンティティをシリアル化しないでください。面倒です。

于 2012-08-12T16:52:37.527 に答える