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);' –