У меня есть эти классы:
/**
* @MongoDB\Document
*/
class Expansion
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\String
*/
protected $name;
/**
* @MongoDB\Document
*/
class Product
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\ReferenceOne(targetDocument="Expansion")
*/
protected $expansion;
/**
* @MongoDB\String
*/
protected $number;
}
/**
* @MongoDB\Document
*/
class Price
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\ReferenceOne(targetDocument="Product")
*/
protected $product;
}
Если у меня есть какой-либо идентификатор Расширения, я могу загрузить любую цену продуктов, на которые он ссылается:
$db_expansion = $dm->getRepository('SampleCollectionBundle:Expansion')->findOneById($expansionId);
$db_product = $dm->createQueryBuilder('SampleCollectionBundle:Product')->select('id')->field('expansion')->references($db_expansion)->getQuery()->toArray();
$product_ids = array_keys($db_product);
$db_prices = $dm->createQueryBuilder('SampleCollectionBundle:Price')->field('product.id')->in($product_ids)->getQuery();
Но этот запрос возвращает только простые объекты Price. Как, кстати, (на Twig) получить номера товаров? Я старался {{ price.product.number }}
но, очевидно, не работает.
Задача ещё не решена.
Других решений пока нет …