2013-02-08 47 views
0

我正在生成發票生成應用程序。在那裏,我有一個表,存儲與旗幟買家和invoice_no單獨的發票項目。這些標誌幫助我從行中獲取彙總發票構造。這是函數:從mysql使用活動記錄在codeigniter中的複雜數據集

public function invoice_get() 
{ 
    $data=array(); 


    $this->db->group_by('invoice_no'); 
    $this->db->order_by('invoice_no','asc'); 
    $Q=$this->db->get('sales'); 
    echo $Q->num_rows(); 
    if($Q->num_rows()>0) 
    { 
     foreach($Q->result_array() as $row) 
     { 

      if(!isset($data[$row['invoice_no']])) 
      { 
       $data[$row['invoice_no']]['date']=$row['date']; 
       $this->db->where('id',$row['buyer']); 
       $q=$this->db->get('ledgers'); 
       $data[$row['invoice_no']]['buyer']=$q->row(); 
      } 
      else 
      { 
       $this->db->where('id',$row['item_id']); 
       $i=$this->db->get('inventory'); 
       $data[$row['invoice_no']]['items'][$row['item_id']]=$i->row(); 

      } 

     } 
     print_r($data); 
     //$this->response($data); 
    } 


} 

的問題是,我沒有得到項目細節 可能是什麼錯誤呢?

+0

這裏有一些相當醜陋的嵌套。我相信它可以用很簡單的方式完成。 – itachi 2013-02-08 11:39:06

+0

@itachi建議一些然後:)希望你有這樣獲取記錄的想法。 – beNerd 2013-02-08 11:40:05

+0

不,我在這裏沒有想到。您正在檢查$ data中的某個索引,其中$ data將始終是一個空數組,除非您指定了某個您沒有的數據。那麼'isset'的目的是什麼? – itachi 2013-02-08 11:43:05

回答

0
$i = 1; 
foreach ($q->result_array() as $row){ 

$data[$row['invoice_number']]['date'] = $row['date']; 
$data[$row['invoice_number']]['buyer']['id'] = $row['id']; 
$data[$row['invoice_number']]['item'][$i]['name'] = $row['name']; 
$data[$row['invoice_number']]['item'][$i]['description'] = $row['description']; 
//and more if you want to add.... 
$i++; 

} 

這應該給你想要的結果。

相關問題