2012-02-23 7 views
6

मैं तारीख तक अपने ब्लॉग टेबल में डेटा को समूहबद्ध करना चाहता हूं।कोडिनेटर सक्रिय रिकॉर्ड के साथ तिथि के अनुसार समूह कैसे करें?

मेरे पास मेरे डेटाबेस में एक डेटाटाइम फ़ील्ड है जिसका उपयोग मैं अपने डेटा को महीने और वर्ष तक समूहित करने के लिए उपयोग करूंगा। (उदाहरण के 2012-01-23 17:25:18)

मैं (एक संग्रह की तरह) माह और वर्ष के आधार पर अपना डेटा समूह के प्रयास में अपने मॉडल के लिए निम्न कोड को शामिल किया है

function get_archive_links(){ 

     $this->db->order_by('date','desc'); 
     $this->db->group_by(Month('date'), Year('date')); 
     $query = $this->db->get('blog'); 

    foreach ($query->result() as $row) { 
     $data[] = array(
      'id' => $row->id, 
      'date' => $row->date 
     ); 
    } 

    return $data; 
} 

लेकिन Fatal error: Call to undefined function Month()

परिणाम की तरह लग रहे करना चाहते हैं:

  • फरवरी 2012
  • जनवरी 2012 मैं निम्न त्रुटि प्राप्त
  • दिसंबर 2012

उत्तर

8

इस लाइन का उपयोग किया जाना चाहिए,

$this->db->group_by(Month('date'), Year('date')); 

महीना इस लाइन को php फ़ंक्शन है। आप चाहते हैं उपयोग एसक्यूएल माह और वर्ष समारोह, तब यह लाइन इस तरह होना चाहिए, तो

$this->db->group_by('MONTH(date), YEAR(date)'); 
1

आपकी क्वेरी

$this->db->group_by('date'); 

आप सीआई के ActiveRecord के माध्यम से एसक्यूएल कार्यों नहीं चलाया जा सकता जब तक कि आप क्वेरी विधि

$this->db->query("GROUP BY MONTH('date')"); 
+1

यह काम करता है। लेकिन मुझे हर महीने 1 से अधिक परिणाम मिलते हैं। मैं संग्रह प्रारूप में (जनवरी 2012, फरवरी 2012 आदि) कैसे दिखा सकता हूं। – hairynuggets

+0

तालिका कैसी दिखती है? महीने और साल अलग कॉलम में हैं? –

1

यह बहुत सरल है सक्रिय रिकॉर्ड में यह कोशिश

$result = $this->db->select('DISTINCT DATE_FORMAT(`t`.`date_field`, "%M %Y") `myformat`', FALSE)->from('my_table `t`')->group_by('MONTH(`t`.`date_field`)')->order_by('t.date_field', 'DESC')->get()->result(); 
print_r($result); 

या सरल क्वेरी

SELECT DISTINCT 
    DATE_FORMAT(`t`.`date_field`, "%M %Y") `myformat` 
FROM 
    (`my_table` `t`) 
GROUP BY MONTH(`t`.`date_field`) 
ORDER BY `t`.`date_field` DESC; 

आउटपुट प्रिंटिंग सरणी

[0] => stdClass Object 
    (
     [myformat] => August 2011 
    ) 

[1] => stdClass Object 
    (
     [myformat] => July 2011 
    ) 

[2] => stdClass Object 
    (
     [myformat] => June 2011 
    ) 

[3] => stdClass Object 
    (
     [myformat] => March 2011 
    ) 

उम्मीद है कि यह आपकी मदद करता है। धन्यवाद!!

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