【问题标题】:How to build an Aggregation query in symfony with doctrine/mongodb?如何使用教义/mongodb 在 symfony 中构建聚合查询?
【发布时间】:2018-03-15 04:03:45
【问题描述】:

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

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

类似这样的:

<?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 代表什么。

非常感谢这里的帮助。


更新

我查看了学说/mongodb-odm 源代码,发现我的版本缺少DocumentRepository.phpDocumentManager.php 文件(都位于/vendor/doctrine/mongodb-odm/lib/Doctrine/MongoDB 文件夹中)中的createAggregationBuilder 函数。

这怎么可能?

我的意思是作曲家说我有版本 1.1.6,这是最新版本,在 git repo 上我可以清楚地看到这些方法(DocumentRepository.phpDocumentManager.php

【问题讨论】:

  • 也许Doctrine Docs: Aggregation Builder 可以提供帮助。在大多数示例中,$dm 可能是 DocumentManager 实例。
  • 感谢您的回答,但那里的所有示例都以:$builder = $dm-&gt;createAggregationBuilder(\Documents\User::class); 开头那么我如何实例化该 DocumentManager 类?我认为这就是$this-&gt;get('doctrine_mongodb')-&gt;getManager() 所做的。大概是我,对教义的了解不够。
  • @ccKep 如果您可以修改我的示例代码,这将有很大帮助:)
  • 我从未使用过 mongodb,但 $dm = $this-&gt;get('doctrine_mongodb')-&gt;getManager(); 听起来很对。它返回什么?
  • 是的,事实证明是正确的 :) 问题出在我的版本上(如我的回答中所述),所以上面的示例代码现在可以正常工作了 :)

标签: php mongodb symfony aggregation doctrine-odm


【解决方案1】:

我傻了。问题是我使用的是 1.1.6 版本的 doctrine/mongodb-odm,而聚合生成器仅在 1.2 版本中可用。直到比(对于像我一样盲目的人),只需使用“dev-master”版本。 在您的composer.json 中,将doctrine/mongodb-odm 行修改为:

"require": {
    "doctrine/mongodb-odm": "dev-master"
}

然后运行composer update doctrine/mongodb-odm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 2020-05-16
    • 2017-10-19
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    相关资源
    最近更新 更多