Права доступа - это некоторые поля embedMany и групповые ссылки.

ользую 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 позволяет возвращать встроенный документ напрямую.

Ответы на вопрос(1)

Ваш ответ на вопрос