Как построить агрегационный запрос в Symfony с помощью doctrine / mongodb?

Я начинаю с Symfony и доктрины / mongodb. Я пытаюсь сделать запрос агрегации, но я получаю

Попытка вызвать неопределенный метод с именем «createAggregationBuilder» класса «Doctrine \ ODM \ MongoDB \ DocumentManager»

с чем-то вроде этого:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

class TestController extends Controller
{
/**
* @Route("/test", name="test")
*/
public function testAction(Request $request) {
$builder = $this->get('doctrine_mongodb')
->getManager()
->createAggregationQuery('AppBundle:Test');

var_dump($builder);
}
}

Я очень разочарован сейчас, так как каждая документация или вопросы и ответы по stackoverflow начинаются с

$dm->createAggregationQuery();

и я не могу узнать что $dm обозначает в этом случае.

Я бы очень признателен за помощь здесь.


ОБНОВИТЬ

Я искал в исходном коде doctrine / mongodb-odm и обнаружил, что в моей версии отсутствует createAggregationBuilder функция как из DocumentRepository.php и DocumentManager.php файл (оба расположены в /vendor/doctrine/mongodb-odm/lib/Doctrine/MongoDB папка.

Как это может быть?

Я имею в виду, что композитор говорит, что у меня версия 1.1.6, которая является последней версией, и в репозитории git я могу ясно увидеть эти методы (DocumentRepository.php, DocumentManager.php)

1

Решение

Дурак я. Проблема заключалась в том, что я использовал версию 1.1.6 doctrine/mongodb-odm и Aggregation Builder будет доступен только в версии 1.2. До этого (для тех, кто так же слеп, как я), просто используйте версию «dev-master».
В вашем composer.json изменить doctrine/mongodb-odm линия к этому:

"require": {
"doctrine/mongodb-odm": "dev-master"}

А потом беги composer update doctrine/mongodb-odm,

1

Другие решения

Других решений пока нет …