diff --git a/app/admin/controller/v1/NavigationItem.php b/app/admin/controller/v1/NavigationItem.php index 6e819b9a..568b087a 100644 --- a/app/admin/controller/v1/NavigationItem.php +++ b/app/admin/controller/v1/NavigationItem.php @@ -20,28 +20,40 @@ class NavigationItem 'created_at' ]); - $navigations = SysNavigationItemModel::field([ - 'id', - 'pid', - 'nav_id', - 'name', - 'sort', - 'blank', - 'status', - 'created_at' + $navigations = SysNavigationItemModel::alias('item') + ->field([ + 'item.id', + 'item.pid', + 'item.name', + 'item.sort', + 'item.blank', + 'item.status', + 'item.created_at', + 'nav.name' => 'nav_name' ]) - ->with(['navigation' => function ($query) { - $query->field(['id', 'name' => 'nav_name']); - }]) - ->withSearch(['name', 'created_at'], [ - 'name' => $param['name']??null, - 'created_at' => !empty($param['created_at'])? explode(',', $param['created_at']) : null - ]) - ->navId($param['nav_id']??null) - ->order(['sort' => 'asc', 'id' => 'asc']) - ->select() - ->bindAttr('navigation', ['nav_name']) - ->hidden(['nav_id', 'navigation']); + ->join('sys_navigation nav', 'nav.id = item.nav_id') + ->where('nav.language_id', '=', request()->lang_id) + ->where(function($query) use($param) { + if (!empty($param['nav_id'])) { + $query->where('item.nav_id', '=', $param['nav_id']); + } + if (!empty($param['name'])) { + $query->where('item.name', 'like', "%{$param['name']}%"); + } + if (!empty($param['created_at'])) { + $value = explode(',', $param['created_at']); + if (count($value) > 1) { + if ($value[1] == $value[0]) { + $value[1] = date('Y-m-d 23:59:59', strtotime($value[1])); + } + $query->whereBetweenTime('item.created_at', $value[0], $value[1]); + } else { + $query->whereTime('item.created_at', '>=', $value[0]); + } + } + }) + ->order(['item.sort' => 'asc', 'item.id' => 'asc']) + ->select(); return success('获取成功', array_to_tree($navigations->toArray(), 0, 'pid')); }