【问题标题】:Only last row getting displayed in view in Codeigniter只有最后一行显示在 Codeigniter 的视图中
【发布时间】:2015-08-13 17:36:53
【问题描述】:

我正在尝试从中获取某些值,然后将其传递给同一控件中的另一个模型。

但是我只能显示视图中的最后一行。

我在下面分享了我的代码,但我不确定我哪里出错了。

控制器:

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();
}

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    欢迎来到 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()。想想速度。为此,您将创建一个类似于以下内容的 model 方法(这只是一个示例):

    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);
    }
    

    希望这会有所帮助。 :)

    【讨论】:

    • @CodeGodies 非常感谢您的详细回复。太清楚了。但是,使用您的代码,我现在才得到第一行。我这边现在有事吗?
    • @Krish 谢谢。这是一个问题。您是决定使用 JOIN 还是坚持原来的方式?我想我最好看看你的代码。你有 Teamviewer 吗?
    • 工作正常。刚刚针对我的场景将 m.id 修改为 m.queue_id。
    • 不错!太棒了,我很高兴您能够弄清楚并感谢您接受我的回答。
    猜你喜欢
    • 2013-09-16
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    相关资源
    最近更新 更多