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