0

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

为了暴露这个问题,我有文档 product 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......

任何想法?

4

1 回答 1

0

我认为您发布的代码没有问题,但通读 ODM 对嵌套、嵌入式文档的功能测试可能会有所帮助。在EmbeddedTest.php中,感兴趣的方法可以是使用 的任何方法EmbeddedTestLevel2,这相当于您的productInformationAddress类,并且testRemoveAddDeepEmbedded().

于 2012-08-02T18:10:42.907 回答