我试图从中获取某些值,然后将其传递给同一控件中的另一个模型。
但是我只能在视图中显示最后一行。
我在下面分享了我的代码,我不确定我哪里出错了。
控制器:
public function test($id){
$mapping_details = $this->queue_model->get_mapping_details($id);
foreach ($mapping_details as $value) {
$data['agent_details'] = array($this->agent_model->get_agent_details($value['user_id']));
}
$this->load->view('app/admin_console/agent_queue_mapping_view', $data);
}
型号:
public function get_agent_details($id) {
$query = "select * from user_table where id = ".$id." and company_id = ".$this->session->userdata('user_comp_id');
$res = $this->db->query($query);
return $res->result_array();
}
答案 0 :(得分:0)
欢迎使用StackOverflow。问题是控制器中的迭代。您正在遍历$mapping_details
结果,并且每次迭代都会将值重新分配给$data['agent_details']
,从而丢失最后存储的信息。你需要做的是推送到一个数组,如下所示:
foreach ($mapping_details as $value) {
$data['agent_details'][] = $this->agent_model->get_agent_details($value['user_id']);
}
但是,如果您创建了一个使用JOIN
从数据库中获取相关信息的查询,那不是最好吗?这将是一种更有效的创建查询的方法,并且会阻止您反复迭代和调用get_agent_details()
。想想速度。为此,您需要创建一个类似于此的模型方法(这只是一个示例):
public function get_mapping_details_with_users($id){
$this->db->select('*');
$this->db->from('mapping_details_table as m');
$this->db->join('user_table as u', 'u.id=m.user_id');
$this->db->where('m.id', $id);
$this->db->where('u.company_id', $this->session->userdata('user_comp_id'));
return $this->db->get()->result();
}
然后您的控制器只需要获取该模型结果并将其发送到视图:
public function test($id){
$data['details_w_users'] = $this->queue_model->get_mapping_details_with_users($id);
$this->load->view('app/admin_console/agent_queue_mapping_view', $data);
}
希望这会有所帮助。 :)