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

CodeIgniter左联查询无法显示id_eskul,请求技术协助

解决左外连接后id_eskul显示NULL的问题

我来帮你定位问题根源并给出解决方案:

问题核心原因

你的join1方法用了select('*')查询所有字段,但eskul和waktudaftar两个表都存在id_eskul字段。在左外连接场景下,waktudaftar表没有匹配数据,它的id_eskul值为NULL;而PHP处理查询结果时,重复的键名会被后面的字段覆盖——也就是waktudaftar.id_eskul(NULL)覆盖了eskul.id_eskul(实际有效值),最终视图里拿到的就是NULL。

具体解决方案

1. 精确指定查询字段(推荐)

不要用select('*'),而是明确列出需要的字段,避免重复字段冲突。比如:
修改模型的join1方法中的select语句:

// 方案1:只选eskul的所有字段,加上waktudaftar需要的字段(如果有)
$this->db->select('eskul.*, waktudaftar.waktu_mulai, waktudaftar.waktu_selesai');

// 方案2:给重复字段起别名,保留两个表的id_eskul
$this->db->select('eskul.id_eskul as eskul_id, eskul.nama_eskul, waktudaftar.id_eskul as waktudaftar_id, waktudaftar.*');

2. 调整视图中的字段引用

如果给字段起了别名,记得在视图里使用别名获取值。比如用了eskul_id作为别名,视图里就要写:

<?php echo $item->eskul_id; ?>

而不是原来的$item->id_eskul。

3. 可选:优化连接条件写法(更规范)

你的连接条件可以调整为更直观的顺序,虽然不直接解决NULL问题,但可读性更强:

$list['eskul'] = $this->m_crud->join1("eskul","waktudaftar","eskul.id_eskul = waktudaftar.id_eskul")->result();

验证步骤

修改后可以先在控制器里打印查询结果,确认字段值是否正确:

var_dump($list['eskul']);

确认id_eskul(或别名后的字段)是eskul表的有效值后,再去视图渲染即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:42:58