从数据库中检索字段,其中字段等于Symfony2中的多个值

时间:2014-04-17 13:10:54

标签: php symfony doctrine dql

我试图对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中?

1 个答案:

答案 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

相关问题