Doctrine MongoDB - 使用多级嵌入式文档查询文档

时间:2012-08-01 12:48:19

标签: mongodb symfony doctrine-orm

我在使用Doctrine MongoDB ODM和Symfony 2嵌入文档时遇到了一些问题。

要公开问题,我有文件产品embedOne productInformation和productInformation embedOne productInformationAddress。

要查询,我使用类似的东西:

/**
 * @ODM\Document 
 **/
class product {
    /**
     * @ODM\EmbedOne(targetDocument="productInformation")
     **/
    protected $informations;
}

/**
 * @ODM\EmbeddedDocument 
 **/
class productInformations {
    /**
     * @ODM\EmbedOne(targetDocument="productInformationAddress")
     **/
    protected $address;

    /**
     * @ODM\Collection
     **/
    protected $attr1 = array();

    /**
     * @ODM\String
     **/
    protected $attr2
}

/**
 * @ODM\EmbeddedDocument 
 **/
class productInformationAddress {
    /** ... suff ... /*
}

当我查询时:

class productRepository {
    public function fetchOne($id) {
        return $this->createQueryBuilder()
            ->field('id')->equals($id)
            ->getQuery()
            ->getSingleResult();
    }
}

但是,我不明白为什么我不能得到$product->getInformations()->getAddress(),总是返回null ......

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我发现您发布的代码没有问题,但通过ODM的嵌套嵌入式文档功能测试可能会有所帮助。在EmbeddedTest.php中,感兴趣的方法是使用EmbeddedTestLevel2的任何内容,相当于您的productInformationAddress类和testRemoveAddDeepEmbedded()