2011-08-09 29 views
0

我正在使用Doctrine 2 MongoDB ODM,除1個特定關係外,所有工作都正常。什麼是模糊的是,我在這個項目看似相同的關係,他們都工作得很好與Doctrine2 ODM保持特定關係的問題

namespace Project\Entities\World; // same NS as class, but this is after 
// splitting functionality from Entity to MappedSuperclass, didn't work either 

/** 
* @ReferenceOne(targetDocument="Project\Entities\World") 
* @var IWorld 
*/ 
protected $world; 

在項目\實體使用\ PlayerCharacter(延伸項目\實體\上面提到的世界\對象) =>

namespace Project\Entities; 

/** 
* @Document(collection="worlds") 
* @HasLifecycleCallbacks 
*/ 
class World { 
    /** 
* @ReferenceMany(targetDocument="PlayerCharacter") 
* @var ArrayCollection 
*/ 
protected $playerCharacters; 
} 

當我設置$ world變量時,在PHP腳本中沒問題。甚至$ objectManager->刷新($字符),$字符 - > getWorld()=== $世界變得很好。但它永遠不會出現在數據庫本身(設置後立即死亡和沖洗,以確保它永遠不會被意外的地方改變)在PlayerCharacter結束,僅在世界側

在另一方面

class PlayerCharacter { 
/** 
* @ReferenceOne(targetDocument="User") 
* @var User 
*/ 
protected $user; 
} 

=>

/** 
* @Document(collection="users") 
* @HasLifecycleCallbacks 
*/ 
class User { 
    /** 
    * @ReferenceMany(targetDocument="PlayerCharacter") 
    * @var ArrayCollection 
    */ 
    protected $characters; 
} 

工作

在簡化版本:
- PlayerCharacter :: $用戶< ==(1:N)==>用戶:: $字符
(和所有其他)的罰款,而只有
- PlayerCharacter :: $世界< ==(1: N)==>世界:: $ playerCharacters
僅適用於世界各地

看着它很多天,找不到任何不同的東西。

  • 試圖重命名的屬性名稱,沒有任何變化
  • 字符
  • 保溼條目--->世界看起來相同他人
  • 當我半手動添加的條目(通過RockMongo),它工作正常
  • 創建「world」字段爲NULL沒有區別,{}它說「未定義的索引:$ id」,但我想這是一個預期的行爲
  • 實體分別工作得很好,它真的只是這一個關係

有什麼我很想念/忽視或我能做些什麼來發現它爲什麼沒有得到持續

(將編輯後,如果有需要獲取更多信息)

謝謝!

回答

0

好,事情是有在UOW許多條目包含的一些世界=>零和一些世界=> ... WorldProxy,因此後者可能得到覆蓋

使用沖水()轉讓前解決這