4
我試圖用SF2/Doctrine Querybuilder爲搜索字段構建一個請求。QueryBuilder:循環中的參數
在我的搜索字段中,我希望能夠鍵入幾個關鍵字,並獲得與所有關鍵字匹配的結果。
所以,這裏是我的代碼(庫):
foreach ($keywordsArray as $keyword)
{
$qb->andWhere($qb->expr()->orX(
$qb->expr()->like('p.name', ':keyword'),
$qb->expr()->like('p.surname', ':keyword')
));
$qb->setParameter('keyword', '%'.$keyword.'%');
var_dump($keyword);
}
問題:參數 '關鍵字' 始終是$ keywordsArray的最後一個元素...
因此,例如,當我在搜索欄中輸入 「約翰·史密斯」,我有:
$ keywordsArray
array (size=2)
0 => string 'John' (length=4)
1 => string 'Smith' (length=5)
循環內的var_dump($關鍵字)告訴我$ keyword = John,然後$ keyword = Smith。
但,Symfony的分析器告訴我執行的查詢是:
SELECT [...]
FROM [...]
WHERE (l0_.name LIKE '%Smith%' OR a1_.surname LIKE '%Smith%')
AND (l0_.name LIKE '%Smith%' OR a1_.surname LIKE '%Smith%')
我所期待的是:
SELECT [...]
FROM [...]
WHERE (l0_.name LIKE '%John%' OR a1_.surname LIKE '%John%')
AND (l0_.name LIKE '%Smith%' OR a1_.surname LIKE '%Smith%')
你有什麼解釋/解決方案?我應該修改什麼來解決問題?
工作完全取代
keyword
,謝謝。但爲什麼你編輯你從「:keyword _」。$ id回答「:keyword_ $ id」?第一部作品,不是第二部作品。 – Blacksad您可以使用或「::關鍵字_」。$ id'或'「:keyword_ $ id」'。這一切都必須工作。我喜歡秒,因爲它沒有連接,但你一定要用雙引號! –
哼,我得到'[Syntax Error] line 0,col 112:錯誤:預期的字符串結束,當我嘗試第二個時得到'$''。不過,我對第一個沒有問題,謝謝:-) – Blacksad