如何在Doctrine2中使用带有数组IN参数的本机查询

时间:2011-10-12 23:17:15

标签: php database doctrine-orm

我有这个用doctrine

编写的本机SQL
SELECT COUNT(DISTINCT t.int_task_type_id) as a_count
FROM tbl_xref_people_task t
WHERE t.bit_completed = true AND
      t.int_people_id = :peopleId AND
      t.int_task_type_id IN (:taskType)

我必须在本机SQL中编写它,因为int_task_type_id是分层模型类中的鉴别器列。

问题是我无法做到以下几点:

$query->setParameter(':taskType', implode(', ',$taskType));

或者这个:

$query->setParameter(':taskType', $taskType, 'array');

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果这有助于其他人:

我刚刚使用Doctrine 2.0.5(ish)使用旧的Zend 1.11版本偶然发现了这个问题。我发现以上内容与我的PDO连接不兼容。我相信PDO会在参数周围添加引号,因此您无法使用上述内容。

我找到的唯一方法是:

None

答案 1 :(得分:0)

我认为您可以使用以下方法轻松完成:

$query->setParameter('taskType', $taskType);

Doctrine会自动将$taskType转换为正确的格式。