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

CodeIgniter视图无法显示teacher's remark教师评语数据问题

故障原因
  • 变量名不匹配:控制器向视图传递的数据键名为exam_result,CodeIgniter框架加载视图时会将$data数组的键转换为独立变量,视图内不存在你调用的$student变量,自然无法读取属性。
  • 数据结构认知错误:模型返回的$data['exam_result']是$query->result()生成的对象数组(包含多条考试记录),不是单个对象,无法直接调用属性取值。
  • 取值路径错误:模型中是将教师评语所属的考试结果集,挂载到每条考试记录对象的exam_result子属性下,teacher_remark并不在考试记录对象的根层级,直接从根对象读取必然取不到值。
  • 遍历逻辑隐患:模型中foreach循环直接操作遍历生成的临时变量$student_exam_value,未通过数组下标回写原数组,部分PHP版本/场景下会出现新增属性丢失的问题。
修复方案
  1. 修正模型层遍历逻辑,确保子查询结果正确写入原结果集:
// 模型 searchStudentExams 方法内循环部分替换为以下代码
if (!empty($student_exam)) {
    foreach ($student_exam as $key => $exam) {
        $student_exam[$key]->exam_result = $this->examresult_model->getStudentExamResults(
            $exam->exam_group_class_batch_exam_id,
            $exam->exam_group_id,
            $exam->id,
            $exam->student_id
        );
    }
}
  1. 修正视图层取值逻辑,按照实际数据结构遍历读取字段,增加空值兼容避免报错:
<!-- 视图输出代码替换为以下内容 -->
<?php if (!empty($exam_result)): ?>
    <?php foreach ($exam_result as $single_exam): ?>
        <?php $remark = $single_exam->exam_result->teacher_remark ?? '暂无教师评语'; ?>
        Teacher's Remark: <?php echo $remark; ?>
    <?php endforeach; ?>
<?php endif; ?>

注:如果getStudentExamResults返回的是数组格式而非对象,将$single_exam->exam_result->teacher_remark调整为$single_exam->exam_result['teacher_remark']即可,和你打印出来的数据源结构保持一致。

  1. 若业务需要在视图中使用$student变量,在控制器中提前赋值到$data数组即可,例如:$data['student'] = $this->student_model->get($id);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:24:14