query()->filter($filters)->get(); return array2tree($list->toArray(), $list->min('parent_id') ?: 0); } public function list() { return ['items' => $this->getTree(request()->all())]; } public function addRelations($query, string $scene = 'list') { if ($scene == 'detail') { $query->with(['parent']); } } public function sortable($query) { if (request()->orderBy && request()->orderDir) { $query->orderBy(request()->orderBy, request()->orderDir ?? 'asc'); } else { $query->orderByDesc($this->sortColumn()); } $query->sort(); } public function deleted($ids) { $ids = explode(',', $ids); $this->query()->where(function ($q) use ($ids) { foreach ($ids as $id) { $q->orWhere('path', 'like', '%-'.$id.'-%'); } })->delete(); } }