Doctrine orm 使用非_id的字段的Doctrine Mongo ODM关系
我在Doctrine ODM中映射关系时遇到问题,因为它们没有使用_id字段。我目前正在使用Doctrine Mongo ODM构建一个symfony应用程序。该应用程序是在传统Mongo模式(数据库已经在生产中)的基础上构建的,我无法更改该模式 在当前模式中,自动生成每个文档中的something_id字段,并将其用作关系。以post->comment为例:Doctrine orm 使用非_id的字段的Doctrine Mongo ODM关系,doctrine-orm,doctrine,symfony,doctrine-odm,Doctrine Orm,Doctrine,Symfony,Doctrine Odm,我在Doctrine ODM中映射关系时遇到问题,因为它们没有使用_id字段。我目前正在使用Doctrine Mongo ODM构建一个symfony应用程序。该应用程序是在传统Mongo模式(数据库已经在生产中)的基础上构建的,我无法更改该模式 在当前模式中,自动生成每个文档中的something_id字段,并将其用作关系。以post->comment为例: //Post { "_id" : ObjectId("abcd1234..."), "title" : "Test ti
//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字段引用post文档,而不是_id或dbref
我不知道为什么它是以这种方式构建的,而不是使用_id或dbref,但我无法更改它
我一直在试图在教义中描绘这一点。我似乎做不到,也看不到文档中关于它的任何内容。我原以为一个“简单”的参考可以做到以下几点,但它似乎不起作用:
/**
* @MongoDB\ReferenceMany(
* targetDocument="Comment",
* mappedBy="postId",
* simple=true)
*/
protected $comments = array();
有可能做我正在尝试的事情吗?i、 e.是否基于非id字段建立关系
提前感谢恐怕这是不可能的,ODM使用的是
\u id
字段,因为它们总是存在且唯一的。此外,也没有办法为引用配置“外键”。