Je commence avec Symfony et doctrine/mongodb. Je suis en train de faire une requête d'agrégation, mais je reçoisComment construire une requête d'agrégation dans symfony avec doctrine/mongodb?
a tenté d'appeler une méthode non définie nommée « createAggregationBuilder » de classe « Doctrine \ ODM \ MongoDB \ DocumentManager »
avec quelque chose comme ça :
<?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);
}
}
Je suis maintenant assez frustré, car toutes les questions et réponses documentation ou stackoverflow commencent par
$dm->createAggregationQuery();
et je ne peux pas savoir ce que $dm
signifie dans ce cas.
J'apprécierais vraiment de l'aide ici.
MISE À JOUR
Je regardais autour de la doctrine/code source mongodb-odm et je trouve que ma version manque la fonction createAggregationBuilder
à la fois le DocumentRepository.php
et le fichier DocumentManager.php
(tous deux situés dans dossier /vendor/doctrine/mongodb-odm/lib/Doctrine/MongoDB
.
Comment cela peut-il être?
Je veux dire compositeur dit que j'ai la version 1.1.6, qui est la dernière version et sur le repo git je peux effacer voir ces méthodes (DocumentRepository.php, DocumentManager.php)
[Doctrine Docs: Générateur d'agrégation] (http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/aggregation-builder.html) peut être utile. '$ dm' est probablement une instance de DocumentManager dans la plupart des exemples. – ccKep
Merci pour la réponse, mais tous les exemples commencent par: '$ builder = $ dm-> createAggregationBuilder (\ Documents \ User :: class);' Alors, comment puis-je instancier cette classe DocumentManager? J'ai pensé que c'était ce que $ this-> get ('doctrine_mongodb') -> getManager() 'a fait. C'est probablement moi qui ne connais pas assez la doctrine. –
@ccKep cela aiderait beaucoup si vous pouviez modifier mon code exemple :) –