2012-01-05 11 views
8

क्या समूह और_where/or_where/or_like ... एक साथ बयान संभव है ताकि अन्य और/कहां बयानों के साथ मिश्रण न किया जा सके।कोडिनेटर सक्रिय रिकॉर्ड 'where_or' grouping

कुछ ऐसा

में परिणाम होगा जहां शहर = 'माई सिटी' और राज्य = 'मेरा राज्य' और (जैसे% name1% या उस जैसी% NAME2% नाम नाम)

उत्तर

11

हाँ। $this->db->where() आपको क्लॉज मैन्युअल रूप से लिखने की अनुमति देता है। आप ऐसा कर सकता है:

$this->db->where('city', 'My City'); 
$this->db->where('state', 'My State'); 
$this->db->where('(name LIKE %name1% OR name LIKE %name2%)', null, false); 

खंड के बैकटिक जोड़ने की कोशिश कर से झूठी रोकता CodeIgniter के लिए तीसरे पैरामीटर की स्थापना।

Active Record documentation देखें। $ शीर्षक वाला अनुभाग-> डीबी-> जहां();सेट करने के लिए उपयोग की जा सकने वाली चार विधियों को बताता है जहां खंड।

+0

बहुत बढ़िया, तीसरे परम याद आ रही थी जब मैं इस बाहर की कोशिश की – kilrizzy

13

मुझे पता है कि यह थोड़ा देर हो चुकी है, लेकिन मुझे यह पोस्ट मिलने पर यह पोस्ट मिला और शॉन द्वारा प्रस्तावित एक से बेहतर समाधान मिला।

$name = 'Bob'; 

$this->db->where('city', 'My City'); 
$this->db->where('state', 'My State'); 
$this->db->group_start(); 
    $this->db->like('name', $name); 
    $this->db->or_like('name', $name); 
$this->db->group_end(); 
+3

यह समाधान Codeigniter के लिए है 3+ लेकिन के लिए नहीं Codeigniter 2 – semsem

0

इन दोनों कार्यों group_start() और group_end() CodeIgniter 3.0.3में लागू किया गया है। मूल प्रश्न के अनुसार यहां थोड़ा बेहतर कार्यान्वयन है।

$name1 = 'Bob'; 
$name2 = 'John'; 

$this->db->where('city', 'My City'); 
$this->db->where('state', 'My State'); 
$this->db->group_start(); 
$this->db->like('name', $name1); 
$this->db->or_like(('name', $name2); 
$this->db->group_end(); 
संबंधित मुद्दे