You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter中视图调用同一模型函数无法获取数据问题咨询

问题分析与解决方案

嘿,这个问题其实是数组赋值的基础误区导致的,我来帮你拆解清楚:

你现在的代码里,第一次给$data2赋值了一个包含'sekiz'键的数组,紧接着第二次又直接用array(...)重新给$data2赋值——这相当于把第一次的数组完全覆盖掉了,最终$data2里只会保留最后一次赋值的'dokuz'数据,自然看不到'sekiz'的内容;而单条赋值时没有覆盖操作,所以能正常工作。

正确的写法有两种:

  1. 一次性定义完整数组
    把两个键值对放在同一个数组定义里,这样就能同时保留两个数据:

    $data2 = array(
        'sekiz' => $this->Database_Model->hafalik_randevu('08:00', $tarih1, $tarih2),
        'dokuz' => $this->Database_Model->hafalik_randevu('09:00', $tarih1, $tarih2)
    );
    
  2. 分步追加数组元素
    先初始化一个空数组,再逐个添加键值对,避免覆盖:

    $data2 = array();
    $data2['sekiz'] = $this->Database_Model->hafalik_randevu('08:00', $tarih1, $tarih2);
    $data2['dokuz'] = $this->Database_Model->hafalik_randevu('09:00', $tarih1, $tarih2);
    

额外的CodeIgniter最佳实践提醒

虽然CodeIgniter允许在视图里直接调用模型,但更规范的做法是把数据逻辑放在控制器中处理,再把组装好的数据传递给视图,这样视图只负责展示内容,代码结构更清晰、易维护:

比如在控制器中:

public function randevu_goruntule() {
    // 假设这里已经获取到$tarih1和$tarih2的值
    $tarih1 = '2024-05-01';
    $tarih2 = '2024-05-07';
    
    // 调用模型获取数据并组装数组
    $view_data = array(
        'sekiz' => $this->Database_Model->hafalik_randevu('08:00', $tarih1, $tarih2),
        'dokuz' => $this->Database_Model->hafalik_randevu('09:00', $tarih1, $tarih2)
    );
    
    // 把数据传递给视图
    $this->load->view('randevu_view', $view_data);
}

然后在视图randevu_view.php里,直接使用$sekiz和$dokuz就可以访问对应的数据了,不用再在视图里处理模型调用和数组组装~

内容的提问来源于stack exchange,提问作者Fatih Ay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:16:55