我的控制器上有这个查询:
$this->db->select('t1.act_id, t2.login, t1.cust_name, t1.act_type, t1.act_detail, t1.date_added, t1.date_modified, t1.act_notes, '
. 't3.category, t1.total_time, sum(t1.total_time) as total')
->from('activity as t1')
->join('user as t2', 't1.user_id = t2.user_id', 'LEFT')
->join('customer as t3', 't1.cust_name = t3.cust_name', 'LEFT')
->where('t2.login', $user)
->where('MONTH(t1.date_added)', $month)
->order_by('t1.date_added', "desc");
$query = $this->db->get();
$result = $query->result_array();
$data = array('title' =>'Sales Report'." - ".$user,
'user' => $result);
$this->load->view('admin/report/vw_report_excel', $data);
我想发布此SUM值
总和(t1.total_time)总计
但我一直收到错误,并说#34;试图获得非对象的财产"
这是我在视图中调用它的方式(vw_report_excel):
<?php echo ($user->total); ?>
如何调用或声明它的正确方法? 此致
这是我的观点,我希望我的SUM从表/循环中排除。
<?php $i=1; foreach($user as $xuser) { ?>
<tr>
<td><?php echo $xuser['act_id']; ?></td>
<td><?php echo $xuser['login']; ?></td>
<td><?php echo $xuser['cust_name']; ?></td>
<td><?php echo $xuser['act_type']; ?></td>
<td><?php echo $xuser['act_detail']; ?></td>
<td><?php echo $xuser['date_added']; ?></td>
<td><?php echo $xuser['date_modified']; ?></td>
<td><?php echo $xuser['act_notes']; ?></td>
<td><?php echo $xuser['category']; ?></td>
<td><?php echo $xuser['total_time']; ?></td>
</tr>
<?php $i++; } ?>
<td><?php echo count($user); ?></td>
<td><?php echo ($user->total); ?></td>
答案 0 :(得分:1)
使用foreach loop
获取您的数据
foreach($user as $usr){
echo $use['total'];
}
答案 1 :(得分:1)
在返回数组而不是对象
时尝试此操作<?php echo ($user[0]['total']); ?>
如果您想要与$user[0]->total
完全相同,请将$result = $query->result_array();
更改为$result = $query->result();
当您获得单行时,可以更有效地避免像$user[0]['total']
这样的索引。只需使用row_array()
代替result_array()
$result = $query->row_array();
如果你使用它,那么不需要循环,你现在可以直接使用
<?php echo $user['login']; ?>
答案 2 :(得分:1)
基于Codeignitor Generating Query Results Manual Guid
<强> result_array() 强>
此方法将查询结果作为纯数组返回,或者为空 没有产生结果时的数组。通常你会在一个中使用它 foreach循环,像这样:
因此请使用foreach()
foreach($user as $usr){
echo $usr['total'];
}
或使用: - <?php echo $user[0]['total']; ?>
(根据您问题中的代码修改)
答案 3 :(得分:1)
由于您使用$result = $query->result_array();
检索数组,因此需要使用数字索引和关联数组来访问它。因此,如果您想访问第一条记录;
<?php echo $user[0]['total']; ?>
或者,如果您想遍历所有结果
<?php foreach( $user as $rec) echo $rec['total'];
//or
for($i=0,$count = count($user);$i<$count;$i++) echo $user[$i]['total']; ?>
PS 如果要遍历,for
循环会更快