<?php
/**
* Created by PhpStorm.
* User: 王柏建
* Date: 2016/10/09
* Time: 11:32
*/
namespace Api\Model;
use Think\Model;
class TypeModel extends Model{
//通过admin_id获取分类
public static function getTypeByAdminId($admin_id){
return M('type')->where(array("admin_id"=>$admin_id))->select();
}
//通过条件获取一个分类
public static function getTypeByWhere($where){
return M('type')->where($where)->find();
}
//通过条件获取部分分类
public static function getAllTypeByWhere($where){
return M('type')->where($where)->field("clothes_type_id,clothes_type_father_id,clothes_type_name,clothes_type_icon_url")->select();
}
}
最后这里是controller里面的写法。
<?php
namespace Api\Controller;
use Api\Model\TypeModel;
use Think\Controller;
class TreeController extends Controller {
//记录层
public $div = [];
//记录树
public $tree = [];
//返回树
public function returnTree(){
$tree = [];
//获取目前已经有的结构
$this->getChild(0); //从第一级开始
//dump($this->tree); //这里是输出数组
$this->ajaxReturn($this->tree,"json"); //输出json
}
//获取某个分类的子分类以及下面的服饰
public function getChild($clothes_type_father_id){
$types = TypeModel::getAllTypeByWhere(array("clothes_type_father_id"=>$clothes_type_father_id));
if(!$types){
array_pop($this->div);
return;
}
if($clothes_type_father_id == 0){
$this->div[] = 0;
}
else{
$this->div[] = TypeModel::getTypeByWhere(array('clothes_type_id'=>$clothes_type_father_id))['clothes_type_id'];
}
//将获取到的东西放到$this->tree里面
$this->putData($this->tree,$this->div,$types);
//循环这一级里面的类,再获取其子类和下面的服饰
foreach($types as $t){
$this->getChild($t['clothes_type_id']);
}
}
//插入数据到特定下标
public function putData(&$array,$down,$data){
$j = [];
$k = 0;
foreach($down as $d){
if($j == null){
$j[$k] = &$array[$d];
}
else{
$j[$k] = &$j[$k++][$d]['son'];
}
}
$count = count($j)-1;
foreach($data as $d){
$j[$count][$d['clothes_type_id']] = $d;
}
unset($j);
unset($k);
}}