2017-10-03 9 views
1

나는 Symfony와 교리/mongodb로 시작하고있다. 나는 집계 쿼리를 할 노력하고있어,하지만 난symfony에서 doctrine/mongodb를 사용하여 집계 쿼리를 작성하는 방법은 무엇입니까?

를 얻을

이 같은 뭔가 클래스의 "createAggregationBuilder"라는 정의되지 않은 방법 "교리 \ ODM \ MongoDB를 \ DocumentManager"

전화를 시도 : 모든 문서 또는 유래 질문에 대한 답변을

$dm->createAggregationQuery(); 
시작부터

<?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이 무엇을 의미하는지 알 수 없습니다.

정말 도움이 되었으면합니다.


UPDATE

나는 교리/MongoDB를-ODM 소스 코드를 둘러보고 있었고, 난 내 버전은 DocumentRepository.phpDocumentManager.php 파일 (양쪽에 위치한 두에서 createAggregationBuilder 기능이없는 것을 발견

이 할 수있는 방법을 /vendor/doctrine/mongodb-odm/lib/Doctrine/MongoDB 폴더.

?

내가 작곡가 의미는 내가 어떤 버전 1.1.6을 말한다 최신 릴리스 및 git repo에서 나는이 방법을 참조하십시오 (DocumentRepository.php, DocumentManager.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"버전을 사용하십시오. 에서 당신의 composer.json이에 doctrine/mongodb-odm 줄을 수정 :

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

을 그리고 composer update doctrine/mongodb-odm를 실행합니다.