我在使用 Doctrine MongoDB ODM 时遇到问题。场景很简单(我认为)。我有一组具有 COLLECTION_PER_CLASS 继承模型(基础、产品等)的文档。这一切都很好,我可以像往常一样持久化对象。
/**
* @ODM\Document(collection="content_base")
* @ODM\InheritanceType("COLLECTION_PER_CLASS")
*/
class Base {
/**
* @ODM\Document(collection="content_products")
*/
class Product extends Base {
现在,我有另一个文档(项目),我想为继承的文档创建 ReferenceOne:
/**
* @ODM\ReferenceOne(targetDocument="Base")
*/
private $content;
这就是我遇到问题的地方,因为 Doctrine ClassLoader 抱怨类 Base 被重新声明:
Fatal error: include(): Cannot redeclare class content\documents\types\base in /vendor/composer/ClassLoader.php on line 183
我有点困惑为什么这会是一个问题,或者这样做的正确方法是什么?
更新
我刚刚注意到,如果我从 ReferenceOne 注释中删除“targetDocument”,我会得到我想要的结果。这是正确的方法吗?
谢谢,格雷格