whx-blogs

一、问题

在实际项目中,经常遇到一对多数据表连表【left join】查询的情况,从数据表查出来的数据集会默认填充主表的记录,如下图:

其中分类UI下面有两个小类别动画、场景,分类CG下面有两个小类别动作、UI,这样的结果集往往不是我们需要的,我们需要的更多的是以下形式的结果集:

二、参考方法

function fun_data_format($data = []){
        $ret = [];
        foreach ($data as $k => $v) {
            if (!isset($data[$k][\'mark\'])) {
                // 提取公共参数【字段】
                $ret[$k] = [
                    \'catg_id\' => $v[\'catg_id\'],
                    \'catg_name\' => $v[\'catg_name\'],
                ];
                foreach ($data as $kk => $vv) {
                    if ($v[\'catg_id\'] == $vv[\'catg_id\']) {
                        $ret[$k][\'nodes\'][] = $vv[\'name\'];
                        // 标记已处理
                        $data[$kk][\'mark\'] = true;
                    }
                }
            }
        }
        $ret = array_values($ret);
        return $ret;
}

 

分类:

技术点:

相关文章: