如何使用Doctrine获取列不在(值数组中)的每一行?

时间:2012-11-02 16:11:11

标签: doctrine doctrine-orm entitymanager

我正在尝试完成类似于以下SQL的操作,但使用的是Doctrine API。

SELECT * FROM table_name WHERE column_name NOT IN (1, 2, 3);

我在考虑这样的事情:

$entityManager->getRepository($entity)->findBy(array('ID' => array('NOT IN' => array(1, 2, 3))));

......我有多远?

1 个答案:

答案 0 :(得分:1)

您可以使用DQL执行此操作:

$result = $entityManager->createQuery("SELECT e FROM $entity e 
        WHERE e.ID NOT IN (:ids)")
    ->setParameter('ids', array(1, 2, 3), \Doctrine\DBAL\Connection::PARAM_INT_ARRAY)
    ->getResult();

自Doctrine 2.1版以来,支持将数组作为参数传递。