3
我正在使用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(或子类别),我已经尝试了几种不同的方式来实现这一目标,一个方法有效,但有点hackish。
第一种方式,不工作:
$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如何让你直接返回嵌入式文档。
请问是否有任何解决方法查询任何参考字段期望ref ID?在我的情况下,我需要像'$ qb-> field('permissions.group.id') - > equals($ id);'权限是一些embedMany字段和组参考一 – 2015-04-19 00:21:45