我正在使用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”,但我想这是一个预期的行为
- 实体分别工作得很好,它真的只是这一个关系
有什么我很想念/忽视或我能做些什么来发现它为什么没有得到持续
(将编辑后,如果有需要获取更多信息)
谢谢!