我试图对Symfony2项目中的表进行计数,其中记录需要匹配一个字段中的多个值。 SQL是这样的:
SELECT * FROM posts WHERE userid IN ('3,4,1') AND open = '1';
目前,我有这段代码:
$group = '3,4,1';
$activePosts = $dm->createQuery('
SELECT COUNT(p.id)
FROM AcmeBundle:Posts p
WHERE p.userId IN (:user)
AND mb.open = :active'
)->setParameters(array(
'user' => $group,
'active' => '1'
));
$actPost = $activePosts->getSingleScalarResult();
它确实检索记录,但忽略了$group
变量中的最后两个值。所以在这种情况下,它基本上使用数字" 3"来运行查询。并且不会使用" 4"或" 1"。
我如何复制我在SQL查询中可以做的事情,但在Symfony2中?
答案 0 :(得分:2)
您需要将$group
作为数组才能使用IN()
子句
$group = array('3','4','1');
$activePosts = $dm->createQuery('
SELECT COUNT(p.id)
FROM AcmeBundle:Posts p
WHERE p.userId IN (:user)
AND mb.open = :active'
)->setParameters(array(
'user' => $group,
'active' => '1'
));
这将导致WHERE p.userId IN ('3','4','1')
并且您当前的查询正在使用它WHERE p.userId IN ('3,4,1')
,这是错误的,它正在搜索字符串3,4,1
而不是个别ID