首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有手工参考的原则ODM

带有手工参考的原则ODM
EN

Stack Overflow用户
提问于 2017-02-21 11:33:01
回答 1查看 847关注 0票数 1

假设我们有以下文件与它们之间的关系:

代码语言:javascript
复制
/**
 * @ODM\Document(collection="foo")
 */
class Foo
{
    /** @ODM\Id(name="_id", strategy="NONE", type="string") */
    public $id;

    /** @ODM\Field(name="name", type="string") */
    public $name;

    /**
     * @ODM\ReferenceOne(targetDocument="Bar")
    */
    public $bar;
}


/**
 * @ODM\Document(collection="bar")
 */
class Bar
{
    /** @ODM\Id(name="_id", strategy="NONE", type="string") */
    public $id;

    /** @ODM\Field(name="name", type="string") */
    public $name;
}

以及以下代码:

代码语言:javascript
复制
$foo = new Foo();
$foo->id = uniqid();
$foo->name = 'thefoo';

$bar = new Bar();
$bar->id = uniqid();
$bar->name = 'thebar';
$foo->bar = $bar;

$dm->persist($bar);
$dm->persist($foo);
$dm->flush();

在这种情况下,与"Bar“的关系将以dbRefs格式以mongo格式存储。

代码语言:javascript
复制
{
    "_id" : "58ac22815e49d",
    "name" : "thefoo",
    "bar" : {
        "$ref" : "bar",
        "$id" : "58ac22815e59a",
        "$db" : "mydb"
    }
}

然而,我想要做的是以这种格式“手动”存储关系:

代码语言:javascript
复制
{
    "_id" : "58ac22815e49d",
    "name" : "thefoo",
    "bar_id" : "58ac22815e59a"
}

在Doctrine中是否有一种方法可以映射我的文档以以这样的格式存储关系?

编辑:多亏了马拉兹姆的回答,我通过以下映射实现了预期的结果。

代码语言:javascript
复制
/**
 * @ODM\Document(collection="foo")
 */
class Foo
{
    /** @ODM\Id(name="_id", strategy="NONE", type="string") */
    public $id;

    /**
     * @ODM\ReferenceOne(name="bar_id", targetDocument="Bar", storeAs="id")
     */
    public $bar;

    /** @ODM\Field(name="name", type="string") */
    public $name;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-21 16:36:43

要使ODM只存储引用文档的id,需要将storeAs="id"添加到参考映射中,有关更多信息,请参见文档中的存储引用章节。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42366150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档