我在使用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
......
有什么想法吗?
答案 0 :(得分:0)
我发现您发布的代码没有问题,但通过ODM的嵌套嵌入式文档功能测试可能会有所帮助。在EmbeddedTest.php中,感兴趣的方法是使用EmbeddedTestLevel2
的任何内容,相当于您的productInformationAddress
类和testRemoveAddDeepEmbedded()
。