连接多张表查询
此查询确保了 tableA 中的每条记录都会出现在结果中,而 tableB 的数据在无匹配时显示 NULL。
SELECT A.*, B.*
FROM cb_shenpi_jiedian AS A
LEFT JOIN cb_shenpi_jilu AS B
ON A.id = B.jiedian_id
WHERE [你的筛选条件]; -- 在此处添加条件
比如:
SELECT A.*, B.*
FROM cb_shenpi_jiedian AS A
LEFT JOIN cb_shenpi_jilu AS B ON A.id = B.jiedian_id
where A.leixing_id = 8
在laravel中,join关键字很重要,是否显示左表数据返回null
use Illuminate\Support\Facades\DB;
// 获取数据
$results = DB::table('cb_shenpi_jiedian as jiedian')
->leftJoin('cb_shenpi_jilu as jilu', 'jiedian.id', '=', 'jilu.jiedian_id')
->where('jiedian.leixing_id', 8)
->orderBy('jiedian.id', 'asc')
->get();
// 处理结果
foreach ($results as $row) {
// 访问审批节点(jiedian)字段
echo $row->shenpi_name; // jiedian表的字段
// 访问审批记录(jilu)字段 - 注意左连接可能为null
if ($row->shenpi_result) {
echo $row->shenpi_result; // jilu表的字段
}
}
字段冲突问题:
如果两个表有同名字段(如 id),后加入表的字段会覆盖前者
建议使用 select() 明确指定需要获取的字段:
->select(
'jiedian.id as jiedian_id',
'jiedian.*',
'jilu.id as jilu_id',
'jilu.shenpi_result'
)
最近访问时间:2025-06-07 19:47:52