我开始使用Symfony和doctrine / mongodb。我试图进行聚合查询,但我得到了
尝试调用名为" createAggregationBuilder"的未定义方法。 class" 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 repo上我可以清楚地看到这些方法(DocumentRepository.php,DocumentManager.php)
答案 0 :(得分:1)
doctrine/mongodb-odm
的1.1.6版本,而聚合构建器只能在1.2版本中使用。直到(对于任何像我一样盲目的人),只需使用“dev-master”版本。
在composer.json
修改doctrine/mongodb-odm
行:
"require": {
"doctrine/mongodb-odm": "dev-master"
}
然后运行composer update doctrine/mongodb-odm
。