Doctrine Mongo ODM关系使用非_id的字段

时间:2016-05-22 08:57:04

标签: doctrine-orm doctrine symfony doctrine-odm

我在Doctrine ODM中映射关系时遇到问题,因为他们没有使用_id字段。我目前正在使用Doctrine Mongo ODM构建一个symfony应用程序。该应用程序是在遗留的Mongo架构之上构建的(数据库已经在生产中),我无法更改该架构。

在当前架构中,每个文档中的something_id字段是自动生成的,并且这些字段用作关系。举一个后>评论的例子:

//Post
{
    "_id" : ObjectId("abcd1234..."),
    "title" : "Test title 1",
    "content" : "lkjlkjlkjlkjl",
    "date_added" : NumberLong(1400000000),
    "post_id" : NumberLong(123456789012345) //this is manually generated
}

post_id字段是自动生成的(并且是唯一的并用作索引)和相应的注释:

//Comment
{
    "_id" : ObjectId("abcd1234..."),
    "title" : "Test comment 1",
    "comment" : "lkjlkjlkjlkjl",
    "date_added" : NumberLong(1400000000),
    "comment_id" : NumberLong(123456789012345), //this is manually generated
    "post_id" : NumberLong(123456789012345) //this is the 'Foreign Key'
}

在上面的示例中,注释文档通过手动生成的post_id字段引用帖子文档,而不是_id或dbref。

我不知道为什么它是以这种方式构建的,而不是使用_id或dbref,但我无法改变它。

我一直试图在学说中映射这个。我似乎无法做到这一点,似乎无法在文档中看到有关它的任何内容。我曾经想过一个简单的'参考文献会如下所示,但它似乎不起作用:

 /**
 * @MongoDB\ReferenceMany(
 *     targetDocument="Comment", 
 *     mappedBy="postId", 
 *     simple=true)
 */
protected $comments = array(); 

有可能做我想做的事吗?即基于非_id字段建立关系?

提前致谢

0 个答案:

没有答案