Ich habe meine zwei Klassen User
und Role
, und ich brauche, um ein QueryBuilder
zu machen, die eine Abfrage für den Benutzer zurückgibt, die die ROLE_PROVIDER
Rolle haben. Ich brauche dies für eine Entität Formularfeld in Symfony 2. In der Formularklassendefinition ich folgende Snippet für das genannte Feld habe:Lehre 2 in Symfony 2 - Filtern eine Querybuilder von einem Verein
$builder->add('provider', 'entity', array(
'class' => 'ElCuadreAccountBundle:User',
'property' => 'username',
'query_builder' => function(UserRepository $ur) {
return $ur->getUsersByRoleQB('ROLE_PROVIDER');
},
'required' => true,
));
Und dann in meiner Gewohnheit UserRepository
Ich habe die folgende Funktion, die eine Rückkehr sollte QueryBuilder
Objekt:
public function getUsersByRoleQB($role) {
$qb = $this->createQueryBuilder('u');
return $qb->join('u.roles','r')
->where($qb->expr()->in('r.role',$qb->expr()->literal($role)))
->orderBy('u.username', 'ASC');
}
natürlich funktioniert das nicht, aber ich klebte es meine Bedürfnisse zu illustrieren.
Ich habe mich umgesehen und es scheint Doctrine2 nicht nativ durch eine Zuordnung zu filtern. In this page sagen sie das und schlagen vor, DQL
für diese Art der Filterung zu verwenden. Mein Problem ist, dass ich nicht gefunden habe, wie man ein QueryBuilder
Objekt aus einem DQL
Satz macht. Wenn Sie mir auch die richtige DQL
Anfrage stellen könnten, wäre ich sehr dankbar ...
Danke für Ihre Hilfe!
Dank! wirklich vollständige Antwort ... Eine Frage, es ist nicht sehr mit der ursprünglichen Frage verwandt, aber hier gehe ich ... Ich habe mehrmals gelesen, dass neue Versionen von Symfony 2 und Doktrin 2 kommen, und die Menschen scheinen das Wissen zu haben Neue Funktionen, aber ich bin es leid, 'php bin/vendors install' auszuführen, und es wird weder Symfony noch Doktrin aktualisiert ... wie kann ich upgraden? oder wann würden diese neuen Versionen offiziell sein ??? Danke für deine Antwort!!! – Throoze
Sie können über D2.2 hier nachlesen: http://www.doctrine-project.org/. S2 wird D2.2 nicht integriert haben, bis S2.1 veröffentlicht wird, wahrscheinlich in diesem Sommer. Sie können jedoch D2.2 direkt installieren, passen Sie Ihre Pfade in autoload.php an und in den meisten Fällen sollte Ihr Doktrin-Code funktionieren. Überprüfen Sie die Dokumente auf Dinge, auf die Sie achten sollten. – Cerad
Danke für Ihre Antworten! – Throoze