L'array è mascherato come stringa nell'istruzione "in"
Domanda
Quando si utilizza questo DQL
$getImages = $em->createQuery('SELECT stuff
FROM MyBundle:MyModelClass
WHERE model.id NOT IN (:hide)')
->setParameter('hide', join(',', $hide), 'array');
Il SQL risultante verrà mappato a:
SELECT stuff FROM mymodelclass WHERE model.id NOT IN ('1,2,3');
Che è ovviamente sbagliato come dovrebbe essere
SELECT stuff FROM mymodelclass WHERE model.id NOT IN (1,2,3);
Quindi la query è soddisfatta corretta. Come posso dire alla dottrina di mappare l'array senza sfuggirlo a una stringa?
Soluzione
Guarda a Manuale
$stmt = $conn->executeQuery('SELECT * FROM articles WHERE id IN (?)',
array(array(1, 2, 3, 4, 5, 6)),
array(\Doctrine\DBAL\Connection::PARAM_INT_ARRAY)
);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow