tp5 order 排序数据有 null 的情况,决定 null 的数据放在最后还是开头
order 字段用法:
order($order . ' is null,' . $order)
示例:
/**
* 获取全部菜单
* @param string $type tree获取树形结构 level获取层级结构
* @return array 结构数据
*/
public function getTreeData($type = 'tree', $order = '', $name = 'name', $child = 'id', $parent = 'pid')
{
// 判断是否需要排序
if (empty($order)) {
$data = $this->select();
} else {
$data = $this->order($order . ' is null,' . $order)->select();
}
$data = $data->toArray();
foreach ($data as &$item) {//语言包处理
$item['title'] = Lang::get($item['title']);
$item['status'] = Lang::get($item['status']);
}
// 获取树形或者结构数据
if ($type == 'tree') {
$data = \Org\Nx\Data::tree($data, $name, $child, $parent);
} elseif ($type = "level") {
$data = \Org\Nx\Data::channelLevel($data, 0, ' ', $child);
// 显示有权限的菜单
$auth = new Auth();
foreach ($data as $k => $v) {
if ($auth->check($v['mca'], Session::get('uid'))) {
foreach ($v['_data'] as $m => $n) {
if (!$auth->check($n['mca'], Session::get('uid'))) {
unset($data[$k]['_data'][$m]);
}
}
} else {
// 删除无权限的菜单
unset($data[$k]);
}
}
}
// p($data);die;
return $data;
}