这是一个令人头疼的问题。我在codeigniter 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.php ) 订购#o_id;?>
$ order_details-> o_id ; //为什么这个表达式显示错误
我猜问题是
对象(stdClass的)[34] public 0 =>
我怎么能解决这个问题,因为我一次只能获取一个订单。感谢
答案 0 :(得分:1)
在CodeIgniter中,$query->result()
返回一个对象数组,每个元素代表结果集中的行。无需将其转换为对象;使用...
$result = $query->result();
if ($result) {
$order_details_by_order_id_result = $result[0];
}
......相反。
对于原始代码,实际上无法获取内容对象:从数组转换结果的PHP对象与数字键不能很好地匹配(您可以阅读有关此here的更多信息)。
答案 1 :(得分:1)
row()方法将为您查询返回单行。
$query = $this->db->get();
if ($query->num_rows() > 0)
{
$row = $query->row();
echo $row->xx_id;
}