如何使用 doctrine/mongodb 在 symfony 中构建聚合查询?
How to build an Aggregation query in symfony with doctrine/mongodb?
我开始使用 Symfony 和 doctrine/mongodb。我正在尝试执行聚合查询,但我得到
Attempted to call an undefined method named "createAggregationBuilder" of 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);
}
}
我现在很沮丧,因为每个文档或 Whosebug 问题和答案都以
开头
$dm->createAggregationQuery();
我不知道 $dm
在这种情况下代表什么。
非常感谢您的帮助。
更新
我查看了 doctrine/mongodb-odm 源代码,发现我的版本缺少 DocumentRepository.php
和 DocumentManager.php
中的 createAggregationBuilder
函数文件(均位于 /vendor/doctrine/mongodb-odm/lib/Doctrine/MongoDB
文件夹中。
怎么会这样?
我的意思是作曲家说我有 1.1.6 版,这是最新版本,在 git 存储库上我可以清楚地看到这些方法 (DocumentRepository.php, DocumentManager.php)
愚蠢的我。问题是我使用的是 doctrine/mongodb-odm
的 1.1.6 版本,而 Aggregation Builder 仅在 1.2 版本中可用。直到(对于任何像我一样盲目的人),只需使用 "dev-master" 版本。
在您的 composer.json
中,将 doctrine/mongodb-odm
行修改为:
"require": {
"doctrine/mongodb-odm": "dev-master"
}
然后 运行 composer update doctrine/mongodb-odm
.
我开始使用 Symfony 和 doctrine/mongodb。我正在尝试执行聚合查询,但我得到
Attempted to call an undefined method named "createAggregationBuilder" of 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);
}
}
我现在很沮丧,因为每个文档或 Whosebug 问题和答案都以
开头$dm->createAggregationQuery();
我不知道 $dm
在这种情况下代表什么。
非常感谢您的帮助。
更新
我查看了 doctrine/mongodb-odm 源代码,发现我的版本缺少 DocumentRepository.php
和 DocumentManager.php
中的 createAggregationBuilder
函数文件(均位于 /vendor/doctrine/mongodb-odm/lib/Doctrine/MongoDB
文件夹中。
怎么会这样?
我的意思是作曲家说我有 1.1.6 版,这是最新版本,在 git 存储库上我可以清楚地看到这些方法 (DocumentRepository.php, DocumentManager.php)
愚蠢的我。问题是我使用的是 doctrine/mongodb-odm
的 1.1.6 版本,而 Aggregation Builder 仅在 1.2 版本中可用。直到(对于任何像我一样盲目的人),只需使用 "dev-master" 版本。
在您的 composer.json
中,将 doctrine/mongodb-odm
行修改为:
"require": {
"doctrine/mongodb-odm": "dev-master"
}
然后 运行 composer update doctrine/mongodb-odm
.