1
我有一个术语数组,我想在一个Doctrine 2查询中使用LIKE通配符进行匹配。数据库是SQL,我正在使用DQL,但查询生成器解决方案将会很好。 我当前查询的设置是这样的:用Doctrine&Symfony 2.1中的数组查询查询
foreach($textterms as $text)
{
$parameters[] = '%-'.$text.'-%';
}
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT p FROM Post p WHERE p.searchfield IN LIKE (:text) ORDER BY p.datetime DESC'
)->setParameter('text', $parameters);
$posts = $query->getResult();
,但我得到symfony的错误 “QueryException:语法错误] 0行,列62:错误:预期文字,得到了 '('”
是此查询可能在教义
嗨,我玩你的查询生成器解决方案\t \t \t foreach($ texterms as $ text){$ query-> orWhere('p.searchfield LIKE?'。$ i ++); $ parameters [] ='% - ' 。 $ text。 ' - %';} 但由于某些原因,即使查询似乎要经过symfony记录器,也没有任何内容放入posts数组中。 – Joe
我无法找到 - > setparameters是为了工作。是否意味着是一个key =>值的数组?当我尝试$参数[我] ='% - '。 $ text。 ' - %';我收到错误“Invalid parameter:token 15 is not defined in the query。”感谢您的帮助 – Joe
[一个更清晰的setParameters用法示例](http://docs.doctrine-project.org/en/2.0。 x/reference/query-builder.html#binding-parameters-to-your-query)如果你正在使用'$ parameters [$ i]'请记住我已经在$ i ++'添加到'$ parameters'中,如果出现错误,很可能是因为在执行'$ parameters [15] = value;'时在数组中使用了?14。 为了进行调试,最后尝试'echo $ query-> getQuery() - > getSQL();''和'var_dump($ parameters);' –