public function test(){
$data = array(
'卧房'=>array(
'床'=>array(
'单人床'=>array(
'ysy高级单人床'=>1,
'tsm高级单人床'=>9
),
'双人床'=>array(
'ysy高级双人床'=>2,
'tsm高级双人床'=>8
)
),
'床头柜'=>array(
'进口柜'=>array(
'法国艾莉丝高级柜'=>3,
'法国莱蒙高级柜'=>6,
),
'本地柜'=>array(
'富贵鸟高级柜'=>4,
'富力新蒿亭高级柜'=>5,
),
)
)
);
$result = $this->initTree($data,0,1,1);
}
/**
* 自动创建分类
* @param $data
* @param $level
* @param int $step
* @param array $arr
* @return int
*/
protected function initTree($data,$pid,$level=1,$step=1,$arr=[])
{
foreach ($data as $k=>$v) {
//查询分类表是否已有该分类
$sql = "select id from srv_kit_category where pid=".$pid." and name='" . $k."'";
$idObj = $this->dao->querySql($sql);
$id = $idObj?$idObj[0]->id:0;
//没有则插入该表,并获取插入id
if (!$id) {
$insertData = array(
'pid' => $pid,
'name' => $k,
'level'=>$level,
);
$this->dao->insert('srv_kit_category')->data($insertData)->check('name', 'notempty')->exec();
if (dao::isError()) {
return 404;
}
$id = $this->dao->lastInsertID();//获取最后的插入id
}
//判断数组的值是否为空,不为空则将id赋值给level,并回调
if (is_array($v)) {
$arr[$step]=$id;
$pid = $arr[$step];
$step++;
$level++;
}
$this->initTree($v, $pid,$level,$step,$arr);//回调
$step--;
$level--;
}
return 200;
}
结果如下
双人床应该是在床下面,而我这里变成在单人床下面了所以怎么调试刚刚的代码数据表结构如下
添加回答
举报
0/150
提交
取消