我正在使用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」,但我想這是一個預期的行爲
- 實體分別工作得很好,它真的只是這一個關係
有什麼我很想念/忽視或我能做些什麼來發現它爲什麼沒有得到持續
(將編輯後,如果有需要獲取更多信息)
謝謝!