问题描述
|
我正在使用Doctrine ODM,但无法通过引用的文档查询嵌入式文档。
考虑以下文件:
<?php
/** @Document */
class TopCategory
{
/** EmbedMany(targetDocument=\"SubCategory\") */
private $subCategories;
}
/** @EmbeddedDocument */
class SubCategory
{
/** ReferenceMany(targetDocument=\"Product\") */
private $products;
}
/** @Document */
class Product
{
/** @String */
private $name;
}
现在,我想知道如何找到按产品分类的TopCategory(或SubCategory),我尝试了几种不同的方法来实现这一目标,一种方法可行,但有点怪异。
第一种方法不起作用:
$category = $dm->createQueryBuilder(\'TopCategory\')
->field(\'subCategories.products\')->includesReferenceTo($someProduct)
->getQuery()->execute();
// ... gives Doctrine\\ODM\\MongoDB\\MongoDBException: No mapping found for field \'subCategories.products\' in class \'TopCategory\'.\'
第二种方法不起作用:
$category = $dm->createQueryBuilder(\'SubCategory\')
->field(\'products\')->includesReferenceTo($someProduct)
->getQuery()->execute();
// ... returns null
第三,解决方法:
$category = $dm->createQueryBuilder(\'SubCategory\')
->field(\'products.$id\')->equals(new \\MongoId($someProduct->getId()))
->getQuery()->execute();
// .. works,but seems hackish
我正在使用GitHub和MognoDB v1.8.0的最新版本
这是怎么回事?
注意:有趣的Doctrine ODM如何使您直接返回嵌入式文档。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)