Array wird als Zeichenfolge in "in" Anweisung maskiert
Frage
Bei Verwendung dieser DQL
$getImages = $em->createQuery('SELECT stuff
FROM MyBundle:MyModelClass
WHERE model.id NOT IN (:hide)')
->setParameter('hide', join(',', $hide), 'array');
Die resultierende SQL wird zugeordnet auf:
SELECT stuff FROM mymodelclass WHERE model.id NOT IN ('1,2,3');
Was offensichtlich falsch ist, wie es sein sollte
SELECT stuff FROM mymodelclass WHERE model.id NOT IN (1,2,3);
Die Abfrage ist also erfüllt. Wie kann ich die Lehre sagen, dass sie das Array abbilden soll, ohne ihm zu einer Zeichenfolge zu entkommen?
Lösung
Ansehen Handbuch
$stmt = $conn->executeQuery('SELECT * FROM articles WHERE id IN (?)',
array(array(1, 2, 3, 4, 5, 6)),
array(\Doctrine\DBAL\Connection::PARAM_INT_ARRAY)
);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow