Ich habe eine Seite in Symfony erstellt, die den Doctrine Query Builder verwendet, um Ergebnisse zurückzugeben. Die Seite enthält auch Suchfunktionen. Die Seite funktioniert im Moment einwandfrei, aber ich frage mich, ob der Doctrine Query Builder-Abschnitt meines Codes neu berechnet werden kann.Ist es möglich, zu einer vorhandenen Doctrine Query hinzuzufügen?
Also meine Frage ist, anstatt Kopieren und Einfügen der gleichen Abfrage (wie ich dies unten in meinem Code ($ results)) und Hinzufügen von zusätzlichen 'where' und 'setParameter' Methoden zum Abfrage-Generator, ist es möglich, die zusätzlichen Optionen nur an die erste Abfrage anzuhängen, damit ich Code nicht erneut verwenden muss?
$em = $this->getDoctrine()->getManager('managerName');
$results = $em->createQueryBuilder()
->select('d.name','d.createdAt')
->from('ManagerName:Demo', 'd')
->orderBy('d.name')
->getQuery()
->getResult();
if ($form->isSubmitted() && $form->isValid()) {
if (isset($_POST['submit'])) {
$em = $this->getDoctrine()->getManager('managerName');
$results = $em->createQueryBuilder()
->select('d.name', 'd.createdAt')
->from('ManagerName:Demo', 'd')
->where('d.name LIKE :searchTerm')
->orderBy('d.name')
->setParameter('searchTerm', '%' . $search->getSearch() . '%')
->getQuery()
->getResult();
return $this->render('AcmeBundleName:Demo:index.html.twig', [
"form" => $form->createView(),
"results" => $results,
"search" => $search->getSearch(),
]);
}
return $this->redirect($request->getUri());
}
So ein Beispiel dafür, was ich suche/versuchen zu bekommen wäre wie folgt aus:
$em = $this->getDoctrine()->getManager('managerName');
$query = $em->createQueryBuilder()
->select('d.name','d.createdAt')
->from('ManagerName:Demo', 'd')
->orderBy('d.name')
->getQuery();
$results = $query->getResult();
if ($form->isSubmitted() && $form->isValid()) {
if (isset($_POST['submit'])) {
$em = $this->getDoctrine()->getManager('managerName');
$results = $query->where('d.name LIKE :searchTerm')
->setParameter('searchTerm', '%' . $search->getSearch() . '%');
return $this->render('AcmeBundleName:Demo:index.html.twig', [
"form" => $form->createView(),
"results" => $results,
"search" => $search->getSearch(),
]);
}
return $this->redirect($request->getUri());
}
Ich habe keine Ahnung, ob ihre möglich, die Abfrage zu verlängern Ich habe das vorher aufgebaute und stundenlang googelnde System scheint keine nützlichen Quellen zu liefern, mit denen ich mich identifizieren kann.
Ich habe auch durch viel Lehre Dokumentation sah, einschließlich der folgenden ohne Erfolg: http://www.doctrine-project.org/api/orm/2.2/class-Doctrine.ORM.QueryBuilder.html
Vielen Dank im Voraus
Nach der ersten Deklaration von '$ results' wird die Variable nie verwendet. Wird es in einem Code verwendet, der hier nicht gezeigt wird? –
Ich übergebe es schließlich als Parameter beim Rendern der Seite, aber da ich mehr daran interessiert bin, meinen Code zu re-factory und den aktuellen Code funktioniert, habe ich nicht alle meine Code enthalten. – DannyDanDan