2017-10-03 2 views
1

私はSymfonyとdoctrine/mongodbを使い始めています。私は、集計クエリを実行しようとしているが、私はsymfonyでdoctrine/mongodbとの集約クエリを構築するには?

を取得

このようなものを持つクラスの「createAggregationBuilder」という名前の未定義のメソッド「教義\ 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の略語は見つかりません。

本当にありがとうございます。


UPDATE

私は教義/ MongoDBの-ODMソースコードの周りを探していたと私は私のバージョンは DocumentRepository.phpDocumentManager.phpファイル(両方にあり、両方から createAggregationBuilder機能が欠落していることがわかった

/vendor/doctrine/mongodb-odm/lib/Doctrine/MongoDBフォルダ。

どのようにこれをすることができますか?

私が作曲された、私はバージョン1.1.6を持っていると言う意味最新のリリースとgitリポジトリで私はこれらの方法を参照してください(DocumentRepository.phpDocumentManager.php

+2

おそらく、[Doctrine Docs:Aggregation Builder](http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/aggregation-builder.html)が役に立ちます。 '$ dm'はおそらくほとんどの例でDocumentManagerインスタンスです。 – ccKep

+0

回答ありがとうございますが、すべての例は次のように始まります: '$ builder = $ dm-> createAggregationBuilder(\ Documents \ User :: class);' DocumentManagerクラスをどのようにインスタンス化できますか?私はこれが '$ this-> get( 'doctrine_mongodb') - > getManager()'のことでした。おそらく私は教義の方法を十分に知らない人です。 –

+0

@ccKep私はあなたのコードを変更してください: –

答えて

1

愚かな私を参照してください。問題は、私がdoctrine/mongodb-odmの1.1.6バージョンを使用していて、集計ビルダーがバージョン1.2でのみ使用できることでした。それまで(私のように盲目の人には)「dev-master」バージョンを使うだけです。

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

そしてcomposer update doctrine/mongodb-odmを実行します。あなたのcomposer.jsonこれにdoctrine/mongodb-odm行を変更して 。