Я начинаю с 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.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
,
Других решений пока нет …