Mit Symfony und Doctrine mit dem DQL-Abfrage-Generator muss ich einige WHERE-Bedingungen optional mit Parametern hinzufügen, mit einigen If-Bedingungsprüfungen.Symfony und Doctrine DQL-Abfrage-Generator: Wie verwendet man mehrere setParameters innerhalb von Zustandsprüfungen?
Pseudo-Code Beispiel:
$qb = $this->getEntityManager()->createQueryBuilder();
$qb = $qb
->select('SOMETHING')
->from('SOMEWHERE')
->where('SOME CONDITIONS');
if (SOME CHECK) {
$qb
->andWhere('field1 = :field1')
->andWhere('field2 = :field2')
->setParameters([
'field1' => $myFieldValue1,
'field2' => $myFieldValue2,
]);
} else {
$qb
->andWhere('field1 = :field1')
->setParameters([
'field1' => $myOtherFieldValue1,
]);
}
Erste Fehler wie:
Ungültige Parameternummer: die Abfrage definiert: Anzahl der gebundenen Variablen Anzahl von Token nicht
Zu wenige Parameter entsprechen X-Parameter, aber Sie nur gebunden Y
Zu viele Parameter: die Abfrage definiert X Parameter und Sie gebunden Y
in den Bedingungen, die aus der if-Anweisung hervorgehen, wie übergeben Sie den Feldwert? wahrscheinlich überschreiben Sie den ersten Set-Parameter. – Matteo
das war nur ein Beispiel, siehe meine Antwort unter – ShinDarth