2013-01-07 39 views
1

我的實體看起來像這樣(只粘貼相關部分):參數1傳遞給學說 ORM 的UnitOfWork :: getCollectionPersister()必須是一個數組,空給出

user.php的

/** 
    * @ManyToMany(targetEntity="Startup", inversedBy="members", cascade={"persist"}) 
    * @OrderBy({"name"="ASC"}) 
    * @var Startup[] 
    */ 
    private $startups; 

    public function __construct($data = array()) 
    { 
     $this->startups = new ArrayCollection(); 
     $this->joined = new DateTime("now"); 
     parent::__construct($data); 
    } 

Startup.php

/** 
    * @ManyToOne(targetEntity="User", cascade={"persist"}) 
    * @var User 
    */ 
    private $founder = null; 

    /** 
    * @ManyToMany(targetEntity="User", mappedBy="startups", cascade={"persist"}) 
    * @OrderBy({"lastName" = "ASC"}) 
    * @var User[] 
    */ 
    private $members; 

    public function __construct($data = array()) 
    { 
     $this->files = new ArrayCollection(); 
     $this->topics = new ArrayCollection(); 
     $this->members = new ArrayCollection(); 

     $this->founded = new DateTime("now"); 

     parent::__construct($data); 
    } 
與我這段代碼運行

現在($這個 - >身份的instanceof用戶,$值只是一些結構洋溢着琴絃,$這個 - >模式的EntityManager):

​​

而且我得到這個:傳遞給主義

參數1 \ ORM \的UnitOfWork :: getCollectionPersister() 必須是一個數組,空給出,堪稱 ... /庫/ Doctrine/ORM/UnitOfWork.php on line 332 and defined

明顯觸發flush。我錯了什麼?

+0

您是否在構造函數中嘗試了'$ data = array()'而不是'$ data = null'? – smottt

+0

這不是問題,我把它覆蓋了,我已經從帖子中刪除它,使其更清晰。 'if($ data == null)$ data = array();'在我使用'$ data'之前。但它實際上是好點,我不知道爲什麼我使用'null'作爲默認值。 –

+0

您能夠: 1.提供更好的堆棧跟蹤(完成一個,最終傳入參數) 2.告訴我們爲什麼您的模型具有持久性方法? – Ocramius

回答

1

固定。 $this->identity是問題。框架得到了序列化,然後反序列化。

+0

這可能是做了一些奇怪的序列化/非序列化/克隆神奇:) – Ocramius

+0

我想我知道發生了什麼,它的全部是我的壞。我忘記了它僅在第一次登錄時從EM直接加載。下一次它可能是會話或其他存儲的序列化/非序列化對象。我是一個白癡,我會堅持每一個請求自動繼續使用它,因爲我的意思。 –

+1

清除它:) 記住不要序列化你的實體,它只是你喝的液體疼痛。 – Ocramius

相關問題