2011-08-15 110 views
2

我想返回的查询结果沿w /行数而不必运行多个查询。这在Codeigniter中可能吗?以下工作可用于返回查询结果,但是是否也可以计算找到的条目数量?Codeigniter:我可以从同一个函数返回多个值吗?

控制器:

$data['records'] = $this->item_model->searchItem($item_name); 

型号:

$query = $this->db->query($sql, array($this->user_id, '%'.$item_name.'%')); 
return $query->result(); 

回答

13
$bindings = array($this->user_id, '%'.$item_name.'%'); 

$records = $this->db->query($sql, $bindings)->result(); 

return array(
    'records' => $records, 
    'count' => count($records), 
); 

然后,在你的控制器:

$query = $this->item_model->searchItem($item_name); 

$data['records'] = $query['records']; 
$data['count'] = $query['count']; 
+0

$查询没有计数'$ query-> result()'确实,并且您可能希望发回'$ query-> result()'作为记录... – jondavidjohn

+0

@jondavidjohn' $ query'已经包含'result'。看看第一行的结尾。也许我应该将该变量重命名为'$ records'。 –

+0

好耶,这很混乱... – jondavidjohn

3

选择一个

$query = $this->db->query($sql, array($this->user_id, '%'.$item_name.'%')); 
$data['result'] = $query->result(); 
$data['rows'] = $query->num_rows(); 
return $data; 

选择二

// model 
$query = $this->db->query($sql, array($this->user_id, '%'.$item_name.'%')); 
return $query; 
// controller 
$data['query'] = $this->item_model->searchItem($item_name); 
// then you have $data['query']->result(); 
// and $data['query']->num_rows(); 
0

,只要你想..However PLZ记得,功能是应该做的一个工作单元可以从一个函数发送尽可能多的变量。因此这条规则不得违反。 我们可以使用东捷结构

如果此{返回A;} ELSEIF(){返回B;}否则{返回℃;}

此外,我们可以在阵列中发送(束)的变量并发送

相关问题