数组是伪装成字符串 “IN” 语句

问题描述:

当使用这种DQL数组是伪装成字符串 “IN” 语句

$getImages = $em->createQuery('SELECT stuff 
    FROM MyBundle:MyModelClass 
    WHERE model.id NOT IN (:hide)') 
->setParameter('hide', join(',', $hide), 'array'); 

生成的SQL将被映射到:

SELECT stuff FROM mymodelclass WHERE model.id NOT IN ('1,2,3'); 

这显然是错误的,因为它应该是

SELECT stuff FROM mymodelclass WHERE model.id NOT IN (1,2,3); 

所以查询完成correclty。我如何告诉教义映射数组而不将其转义为字符串?

manual

$stmt = $conn->executeQuery('SELECT * FROM articles WHERE id IN (?)', array(array(1, 2, 3, 4, 5, 6)), array(\Doctrine\DBAL\Connection::PARAM_INT_ARRAY) );