2010-11-08 8 views

उत्तर

21

यह मुख्य रूप से आपके डेटाबेस-सर्वर पर निर्भर करता है। MySQL के साथ एक जैसा मामला असंवेदनशील है जैसे PostgreSQL केस संवेदनशील है। लेकिन तुम अपने आप को कुछ इस तरह के साथ मदद कर सकते हैं:

$pattern = strtolower('HEllO WorlD'); 
$q = Doctrine_Query::create() 
     ->select('u.username') 
     ->from('User u') 
     ->where("LOWER(u.username) LIKE ?", $pattern); 
+0

और उपयोगकर्ता नाम कॉलम पर अनुक्रमणिका के बारे में क्या? – Jekis

0

अन्य बात आप कर सकते है:

$qb->andWhere($qb->expr()->like('lower(o.name)', ':name')); 

$qb->setParameter('name', '%'. strtolower($search) . '%'); 

सादर।

3

इसके अलावा, आप की कोशिश कर सकते हैं:

$queryBuilder->where('LOWER(b.title) LIKE LOWER(:query)') 
     ->setParameter('query', '%' . $query . '%'); 

महत्वपूर्ण: एक स्ट्रिंग है strtolower साथ लोअर केस में विशेष वर्ण परिवर्तित करने के बाद(), विशेष वर्ण सही प्रतीत नहीं होते।

0

ऐसा करने का सबसे अच्छा तरीका यह है कि उस कॉलम में एक कैनोनाइज्ड उपयोगकर्ता नाम कॉलम हो, आप उपयोगकर्ता नाम कॉलम के लोअरकेस संस्करण को स्टोर कर सकते हैं और कोई अन्य कैनोनाइजेशन प्रक्रिया जिसे आप करना चाहते हैं और उपयोगकर्ता नाम के बजाय उस कॉलम को खोजें और इंडेक्स करें कॉलम, तो बस

->where("u.canonic_username) LIKE ?", $pattern); 

इस तरह आप इंडेक्स और सभी का उपयोग कर सकते हैं।

-1
$q = Doctrine_Query::create() 
$q->select('t') 
    ->from('database_table t') 
    ->where($q->expr()->like('t.search_field', ':search_text')) 
    ->setParameter('search_text', '%'.strtolower($searchText).'%'); 
+0

यह उत्तर निम्न गुणवत्ता के रूप में चिह्नित किया गया है। क्या आप कृपया अपना कोड समझा सकते हैं और यह समस्या का हल क्यों करता है? – AJFarmar

संबंधित मुद्दे