2009-10-02 9 views
24

मैं अपने पहले गंभीर कोड इग्निटर ऐप में कुछ कोड डीबग करने का प्रयास कर रहा हूं और मुझे लगता है कि मैं केवल कच्चे एसक्यूएल को प्राप्त कर सकता हूं जहां मेरा ActiveRecord कोड अभी उत्पन्न हुआ है।कोडइग्निटर में कच्चे SQL क्वेरीज़ प्राप्त करना 1.7

$where = 'DAY(`datetime_start`) = '. date('d',$day) .' AND '; 
    $where .= 'MONTH(`datetime_start`) = '. date('m',$day) .''; 

    $this->db->from('events')->where($where); 
    $result = $this->db->get(); 

सहायता के लिए धन्यवाद!

उत्तर

41

से पहले क्वेरी चलाता है:

$this->db->_compile_select(); 

और चलने के बाद उसे:

$this->db->last_query(); 
+2

_compile_select() को कोडइग्निटर के हाल के संस्करणों में संरक्षित के रूप में चिह्नित किया गया है (यह संभवतः PHP4 संगतता के लिए पहले ही संरक्षित नहीं किया गया था)। इसलिए आप बड़ी क्वेरी निष्पादित करने से बचने के लिए सीमा को केवल 1 पर सेट कर सकते हैं और फिर last_query() पर कॉल कर सकते हैं, या आप प्रतिबिंब का उपयोग कर सकते हैं लेकिन पहला विकल्प बेहतर है। –

+0

इसके अलावा: ऐसा लगता है कि get_compiled_select() कोडइग्निटर के भविष्य के संस्करण में उपलब्ध होगा; यह पहले से ही देव शाखा में है (https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/DB_query_builder.php)। मैंने डीबी_एक्टिव_रेक को उस विधि की प्रतिलिपि बनाई और यह ठीक से काम किया, यहां तक ​​कि इस लाइब्रेरी के साथ: https://github.com/NTICompass/CodeIgniter-Subqueries –

8

बेशक, मुझे पोस्टिंग के 2 मिनट बाद, Phil Sturgeon की सौजन्य मिली।

echo $this->db->last_query(); 
8

इसके अलावा, आप अपने नियंत्रक में निम्नलिखित रख सकते हैं:

$this->output->enable_profiler(TRUE); 

आप प्रश्नों और एक बहुत अधिक मिल जाएगा।

+0

मेरे लिए बहुत उपयोगी .... धन्यवाद का भार :) –

-2

आप सीआई के अगले संस्करण जब तक कुछ इस तरह बना सकते हैं जारी की है

private function get_query_string() 
{ 
    return 'SELECT ' . 
      implode(' , ' , $this->db->ar_select) . 
      ' FROM ' . 
      implode(' , ' , $this->db->ar_from) . 
      (count($this->db->ar_where) ? ' WHERE ' : '') . 
      implode(' ' , $this->db->ar_where); 
} 
+1

यह वास्तव में सटीक परिणाम उत्पन्न करने की संभावना नहीं है कि वास्तव में कौन सी क्वेरी चल रही है – Matthew

0

किसी के लिए इस पुरानी पोस्ट को ढूंढकर और यह सोचकर कि यह नवीनतम v3 में क्या है, यह फ़ंक्शन $-> db-> get_compiled_select() है।

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