我正在尝试根据请求传入的多个值对一个表进行简单查询,并且遗漏了一些对于经验丰富的人来说显而易见的事情。
这不起作用:
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();
}
我没理解什么?
答案 0 :(得分:0)
你要用AND组合两个字符串,这就是为什么它抱怨得到一个布尔值。删除多余的引号,以便AND是where函数中单个字符串参数的一部分。