带点字段名(id.level)无法获取数据,页面无数据显示求助
解决CodeIgniter视图中
$row->'id.level'字段无法显示数据的问题 首先明确:$row->'id.level'这种写法本身不符合PHP对象属性的调用语法,这是核心问题之一,可从以下几个方向排查解决:
1. 修正视图中的属性调用语法
PHP对象的属性不能用带单引号和点的格式调用。如果你的level字段来自关联的Karyawan表,先确认模型查询时该字段的名称(或别名),再用正确方式调用:
- 若查询时直接选中
level字段,视图中写:$row->level - 若查询时给字段取了别名(比如
user_level),视图中写:$row->user_level
2. 检查模型中的关联查询是否正确
因为涉及Pengguna和Karyawan两个表,必须确保模型里正确关联两张表,并且选中了level字段:
// User_model.php 示例修正代码 public function get_user_data() { // 明确选中需要的字段,包括Karyawan表的level $this->db->select('pengguna.*, karyawan.level'); $this->db->from('pengguna'); // 根据实际外键关联两张表,这里假设pengguna表有karyawan_id字段关联karyawan的id $this->db->join('karyawan', 'pengguna.karyawan_id = karyawan.id', 'left'); return $this->db->get()->result(); }
如果担心字段名冲突,可以给level加别名:
$this->db->select('pengguna.*, karyawan.level AS user_level');
3. 调试确认返回数据结构
在控制器中获取数据后,打印调试信息,确认返回的对象里是否包含目标字段:
// User.php 控制器示例 public function form_user() { $data['user_list'] = $this->User_model->get_user_data(); // 打印第一条数据,查看字段结构 if (!empty($data['user_list'])) { print_r($data['user_list'][0]); exit; } $this->load->view('user/form_user', $data); }
通过这个调试步骤,可以直接看到模型返回的数据里有没有level或你设置的别名字段,避免在视图里无效调试。
4. 核对数据库表结构
最后确认Karyawan表中确实存在level字段,字段名拼写完全一致(注意大小写,MySQL默认不区分,但严格模式下可能有影响)。
内容的提问来源于stack exchange,提问作者Nur Fajarial
相关产品推荐
相关产品推荐

