$layer) { return []; } $result = []; foreach ($items as $item) { if ($item->pid == $pid) { $node = [ 'id' => $item->id, 'name' => $item->name, 'created_at' => $item->created_at, 'updated_at' => $item->updated_at, 'pid' => $item->pid, 'children' => self::_tree($items, $item->id, $level + 1), ]; if ($level === 1) { $result[$item->id] = $node; } else { $result[] = $node; } } } return $result; } public static function genAreaTree($storeid,$layer = 3) { if ($layer <= 1) { return []; } $items = self::whereBetween('attr_type', [0, $layer])->where('store_id',$storeid)->orderBy('attr_type', 'desc')->orderBy('updated_at','desc')->get(); $result = self::_tree($items, 0, 0, $layer); ksort($result); return $result; } public function pid(){ if($this->pid){ return self::find($this->pid)?self::find($this->pid)->name:$this->pid; }else{ return ''; } } public function attr_type(){ switch ($this->attr_type){ case 1: return '型号'; break; case 2: return '颜色'; break; default: return '品类'; break; } } }