Php 如何使用doctrine/mongodb在symfony中构建聚合查询?
我从Symfony和doctrine/mongodb开始。我正在尝试进行聚合查询,但我得到 试图调用类“Doctrine\ODM\MongoDB\DocumentManager”中名为“CreateAgregationBuilder”的未定义方法 比如说:Php 如何使用doctrine/mongodb在symfony中构建聚合查询?,php,mongodb,symfony,aggregation,doctrine-odm,Php,Mongodb,Symfony,Aggregation,Doctrine Odm,我从Symfony和doctrine/mongodb开始。我正在尝试进行聚合查询,但我得到 试图调用类“Doctrine\ODM\MongoDB\DocumentManager”中名为“CreateAgregationBuilder”的未定义方法 比如说: <?php namespace AppBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle
<?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);
}
}
在这种情况下,我不知道$dm代表什么
我真的很感谢你的帮助
更新 我查看了doctrine/mongodb odm源代码,发现我的版本缺少
DocumentRepository.php
和DocumentManager.php
文件中的CreateAgregationBuilder
函数(两者都位于/vendor/doctrine/mongodb odm/lib/doctrine/mongodb
文件夹中)
这怎么可能
我的意思是composer说我有1.1.6版,这是最新的版本,在git repo上我可以清楚地看到这些方法(,)愚蠢的我。问题是我使用的是1.1.6版的
条令/mongodb odm
,聚合生成器将只在1.2版中可用。直到(对于像我这样的盲人),只需使用“dev master”版本。
在composer.json
中,将条令/mongodb-odm
行修改为:
"require": {
"doctrine/mongodb-odm": "dev-master"
}
然后运行
composer-update-doctrine/mongodb-odm
可能会有所帮助。$dm
可能是大多数示例中的DocumentManager实例。感谢您的回答,但所有示例都以以下开头:$builder=$dm->createAggregationBuilder(\Documents\User::class)
那么我该如何实例化DocumentManager类呢?我想这就是$this->get('document\u mongodb')->getManager()
所做的。可能是我,对document的方式了解不够。@ccKep如果你能修改我的examle代码,那会有很大帮助:)我从来没有使用过mongodb,但是$dm=$this->get('document\u mongodb'))->getManager()代码>听起来不错。它返回了什么?是的,结果是正确的:)问题出在我的版本上(如我的回答中所述),因此上面的示例代码现在可以正常工作:)
"require": {
"doctrine/mongodb-odm": "dev-master"
}