2015-09-25 146 views
-1

這是一個很長時間的頭痛問題。我在codeigniter php活動記錄中有以下代碼。將對象的隱式數組轉換爲單個對象php

$this->db->select('*'); 
    $this->db->from('orders'); 
    $this->db->join('order_detail', 'order_detail.order_id = orders.o_id'); 
    $this->db->join('profiles','profiles.id = orders.buyer_id','left'); 
    $this->db->where('orders.o_id', $order_id); 
    $this->db->group_by('orders.o_id'); 
    $query = $this->db->get(); 
    $order_details_by_order_id_result = (object)$query->result(); 

結果

的var_dump($ order_details_by_order_id_result);退出; //見下面

object(stdClass)[34] 
    public 0 => 
    object(stdClass)[37] 
     public 'xx_id' => string '13' (length=2) 
     public 'yy_iud' => string '22' (length=10) 
     public 'order_total' => string '25.00' (length=5) 
     public 'shipto_fname' => string 'dan' (length=3) 
     public 'shipto_lname' => string 'theman' (length=6 

我控制器上我叫上面的函數如下:

$order_details = $this->orderdetails->get_orderdetail_of_buyer($oid); 
    $data['order_details'] = $order_details; //pass this to the view 
    $this->load->view('dashboard/order_detail_view',$data); 

,我想將結果發送到視圖(/order_detail_view.phpOrder #o_id;?>

$ order_details-> o_id; //爲什麼地球上這個表情告訴我錯誤

我想這個問題是

對象(stdClass的)[34] 公共0 =>

我如何能解決這個問題,因爲我只取一個一次訂購。謝謝

+1

我想我們需要更多的代碼。我沒有在任何地方看到對名爲'$ order_details'的對象的引用,所以我們不知道它爲什麼不包含值。 –

+0

編輯請參閱 – danielad

回答

1

在CodeIgniter中,$query->result()返回一個對象數組,每個元素表示結果集中的行。無需將其轉換爲對象;使用...

$result = $query->result(); 
if ($result) { 
    $order_details_by_order_id_result = $result[0]; 
} 

...改爲。


爲了您的原代碼,實際上沒有辦法來獲取內容對象:是從數組轉換不要用數字鍵發揮很好的結果PHP對象(你可以閱讀更多關於這個here)。

+0

沒有這是一個手動的方式做我想避免這樣做,你認爲? – danielad

+0

避免什麼,總是得到第一個結果?你想顯示那些在行嗎? – raina77ow

+0

是的,但你在這裏runx我的一些邏輯,forxple。你霧我的結果是視圖是所有的對象,你分配給它的第一個元素是數組作爲結果[0] – danielad

1

row()方法將爲您查詢返回單行。

$query = $this->db->get(); 
if ($query->num_rows() > 0) 
{ 
    $row = $query->row(); 
    echo $row->xx_id; 
} 
+0

你以前的答案應該比這更適合 – danielad

相關問題