/ / Innere Abfrage-Set-Parameter der Doctrine - symfony, doctrine2

Innere Abfrageparameter für Doktrine - symfony, doctrine2

Ich versuche, eine innere Abfrage auszuführen und Parameter ohne Erfolg zu setzen. Ich erhalte immer:

Ungültige Parameternummer: Die Anzahl der gebundenen Variablen stimmt nicht mit der Anzahl der Token überein

Dies ist meine Frage:

SELECT i2
FROM MyBundle:Identity i2
INNER JOIN MyBundle:Property\Mapped\Email propertyEmail WITH propertyEmail.identity = i2
INNER JOIN MyBundle:Channel channel WITH propertyEmail.channel = channel
WHERE (
SELECT COUNT(mappedEmail)
FROM MyBundle:Property\Mapped\Email mappedEmail
WHERE mappedEmail.identity = i2
AND mappedEmail.channel = :channel
AND mappedEmail.createdAt <= :dateFrom
) > 0
AND IDENTITY(propertyEmail.channel) <> :channel
AND propertyEmail.createdAt <= :dateFrom
GROUP BY i2

Und so setze ich als Unterabfrage:

$innerQuery = $queryBuilder->getEntityManager()->createQuery($query)
->setParameters([
"channel" => $channelId,
"dateFrom" => $dateFrom
])
;
$queryBuilder->andWhere($queryBuilder->expr()->notIn($alias, $innerQuery->getDQL()));

Das gibt den Fehler zurück:

Ungültige Parameternummer: Die Anzahl der gebundenen Variablen stimmt nicht mit der Anzahl der Token überein

Wenn ich die Abfrage als einzelne Abfrage ausführe, funktioniert alles richtig.
Danke für den Vorschlag.

Antworten:

0 für die Antwort № 1

Versuchen Sie, die Parameter wie folgt auf die Hauptabfrage anzuwenden:

$innerQuery = $queryBuilder->getEntityManager()->createQuery($query);

$queryBuilder
->andWhere($queryBuilder->expr()->notIn($alias, $innerQuery->getDQL()))
->setParameters([
"channel" => $channelId,
"dateFrom" => $dateFrom
]);