Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用doctrine/mongodb在symfony中构建聚合查询?_Php_Mongodb_Symfony_Aggregation_Doctrine Odm - Fatal编程技术网

Php 如何使用doctrine/mongodb在symfony中构建聚合查询?

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

我从Symfony和doctrine/mongodb开始。我正在尝试进行聚合查询,但我得到

试图调用类“Doctrine\ODM\MongoDB\DocumentManager”中名为“CreateAgregationBuilder”的未定义方法

比如说:

<?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"
}