想象一下这段代码:
$em = $container->get('doctrine.orm.entity_manager');
$qb = $em->getRepository('SomeBundle:SimeEntity')->createQueryBuilder('e');
$qb->addSelect('(CASE WHEN (e.title IN (:param)) THEN 1 ELSE 0 END) AS HIDDEN ord');
$qb->addOrderBy('ord');
$qb->setParameter('param', array('one', 'two', 'three'));
$qb->getQuery()->getResult();
预期结果是什么?是的,只是实体列表。
但我们真的会看到什么?例外:Invalid parameter number: number of bound variables does not match number of tokens
为什么会这样?
如果我将参数添加到where
语句,则此代码将正常工作。