假设有2张表
CREATE TABLE IF NOT EXISTS `structure` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(64) DEFAULT '' COMMENT '名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT = '部门表';
CREATE TABLE IF NOT EXISTS `structure` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`realname` varchar(64) DEFAULT '' COMMENT '姓名',
`structure_id` int(11) DEFAULT NULL COMMENT '所属部门',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT = '用户表';
部门表跟人员表是一个一对多的关系,请问编写接口如何生成这种结构?
{
data: [{
'id': '', // 部门ID
'name': '', // 部门名称
'list': [{ // 用户列表
'id': '', // 用户ID
'realname' : '', // 用户姓名
}],
}]
}
现在我有一个写法,但是总觉得不是太好(用的是tp5语法), 即是把数据都查出来再处理入数组中。
function test()
{
$structure = Db::name('structure')->select();
$user = Db::name('user')->select();
foreach ($structure as &value) {
foreach ($user as $k => $v) {
if ($value['id'] == $v['structure_id']) {
$value['list'][] = $v;
unset($user[$k]);
}
}
}
return $structure;
}
SMILET