Como consultar documentos incorporados por um documento referenciado?
Estou usando o Doctrine ODM e estou tendo problemas para consultar documentos incorporados por um documento referenciad
Considere os seguintes documentos:
<?php
/** @Document */
class TopCategory
{
/** EmbedMany(targetDocument="SubCategory") */
private $subCategories;
}
/** @EmbeddedDocument */
class SubCategory
{
/** ReferenceMany(targetDocument="Product") */
private $products;
}
/** @Document */
class Product
{
/** @String */
private $name;
}
Agora, estou me perguntando como eu poderia encontrar uma TopCategory (ou subcategoria) por produto, tentei algumas maneiras diferentes de conseguir isso, um método funciona, mas é um pouco tol
Primeira maneira, não funciona:
$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'.'
Segunda maneira, não funciona:
$category = $dm->createQueryBuilder('SubCategory')
->field('products')->includesReferenceTo($someProduct)
->getQuery()->execute();
// ... returns null
erceiro, solução alternativa de trabalho:
$category = $dm->createQueryBuilder('SubCategory')
->field('products.$id')->equals(new \MongoId($someProduct->getId()))
->getQuery()->execute();
// .. works, but seems hackish
Estou usando as últimas atualizações do GitHub e MognoDB v1.8.0 O que há com isso?
OTA: Interessante como o Doctrine ODM permite retornar um documento incorporado diretament