Doctrine QueryBulider语法错误

时间:2013-08-01 23:58:52

标签: symfony doctrine-orm

我正在尝试根据请求传入的多个值对一个表进行简单查询,并且遗漏了一些对于经验丰富的人来说显而易见的事情。

这不起作用:

public function showAction(Request $request)
{
    if ($request->getMethod() == 'GET') {
        $id = $request->get('locationid');
        $kfType = $request->get('type');
        $em = $this->getDoctrine()
                    ->getManager();

        $data = $em->createQueryBuilder()
                    ->select('d')
                    ->from('DashDataBundle:Data',  'd')
                    ->where('d.locationid = :locationid' AND 'd.kfType = :kfType' )
                    ->setParameters(array('locationid'=> $id,'kfType'=> $kfType))
                    ->setMaxResults(100)
                    ->getQuery()
                    ->getResult();
    }

错误是:
警告:get_class()期望参数1为object,在/Applications/MAMP/htdocs/path/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Expr/Base.php第89行中给出布尔值

但是,这只适用于一个参数:

public function showAction(Request $request)
{
    if ($request->getMethod() == 'GET') {
        $id = $request->get('locationid');
        $kfType = $request->get('type');
        $em = $this->getDoctrine()
                    ->getManager();

        $data = $em->createQueryBuilder()
                    ->select('d')
                    ->from('DashDataBundle:Data',  'd')
                    ->where('d.locationid = :locationid')
                    ->setParameter('locationid', $id)
                    ->setMaxResults(100)
                    ->getQuery()
                    ->getResult();
    }

我没理解什么?

1 个答案:

答案 0 :(得分:0)

你要用AND组合两个字符串,这就是为什么它抱怨得到一个布尔值。删除多余的引号,以便AND是where函数中单个字符串参数的一部分。