2014-11-06 58 views
0

我使用學說查詢生成器來篩選記錄,這是我認爲這是導致問題的一部分:主義LIKE帶俄語字符

$query = $query->where('i.offernumber LIKE :search') 
    ->orWhere('o.client LIKE :search') 
    ->orWhere('o.sticker LIKE :search') 
    ->orWhere('o.gu LIKE :search') 
    ->orWhere('o.project LIKE :search') 
    ->orWhere('o.quantity LIKE :search') 
    ->orWhere('o.date LIKE :search') 
    ->leftJoin('o.previous', 'p') 
    ->leftJoin('p.input', 'pi') 
    ->orWhere('pi.offernumber LIKE :search') 
    ->setParameter('search', "%".$search."%"); 

的問題是,我得到以下錯誤,當我輸入俄文字母人物:

An exception occurred while executing 'SELECT c0_.id AS id0, c0_.client AS client1, c0_.quantity AS quantity2, c0_.next AS next3, c0_.status AS status4, c0_.date AS date5, c0_.sticker AS sticker6, c0_.gu AS gu7, c0_.project AS project8, c0_.completed AS completed9, c0_.rversion AS rversion10, c0_.input_id AS input_id11, c0_.previous AS previous12, c0_.user_id AS user_id13 FROM crm_order c0_ LEFT JOIN crm_input c1_ ON c0_.input_id = c1_.id LEFT JOIN crm_order c2_ ON c0_.previous = c2_.id LEFT JOIN crm_input c3_ ON c2_.input_id = c3_.id WHERE c1_.offernumber LIKE ? OR c0_.client LIKE ? OR c0_.sticker LIKE ? OR c0_.gu LIKE ? OR c0_.project LIKE ? OR c0_.quantity LIKE ? OR c0_.date LIKE ? OR c3_.offernumber LIKE ?' with params ["%\u041f\u0440\u0438\u0442\u043e\u0447\u043d\u0430\u044f%", "%\u041f\u0440\u0438\u0442\u043e\u0447\u043d\u0430\u044f%", "%\u041f\u0440\u0438\u0442\u043e\u0447\u043d\u0430\u044f%", "%\u041f\u0440\u0438\u0442\u043e\u0447\u043d\u0430\u044f%", "%\u041f\u0440\u0438\u0442\u043e\u0447\u043d\u0430\u044f%", "%\u041f\u0440\u0438\u0442\u043e\u0447\u043d\u0430\u044f%", "%\u041f\u0440\u0438\u0442\u043e\u0447\u043d\u0430\u044f%", "%\u041f\u0440\u0438\u0442\u043e\u0447\u043d\u0430\u044f%"]: 

SQLSTATE[HY000]: General error: 1271 Illegal mix of collations for operation 'like' 

什麼可能會造成這個錯誤,並且是有辦法解決這個問題?

編輯

圍繞推動代碼,並試圖各種組合之後,我精確定位錯誤的原因,它的 這2條如下因素線:

->orWhere('o.quantity LIKE :search') 
->orWhere('o.date LIKE :search') 

Apratently那些2個變量不是字符串(數字和日期的MySQL類型),並且上面的查詢嘗試爲「LIKE%string%」查找不是字符串類型的列它會導致錯誤。與此相同的問題post

對於這個問題,有什麼可能的解決方案,因爲我仍然需要搜索字符串,數字和日期?

+0

[故障排除「的排序規則的非法組合」錯誤在MySQL(可能重複http://stackoverflow.com/questions/3029321/troubleshooting-illegal-mix-的-歸類誤差合的MySQL) – Mihai 2014-11-06 13:54:20

回答

0

你有沒有在config.yml設置字符集

doctrine: 
    dbal: 
     {# ... #} 
     charset: UTF8