query()->orderByDesc('sort')->get()->toArray(); return array2tree($list); } public function list() { return ['items' => $this->getTree()]; } public function store($data): bool { $pid = data_get($data, 'parent_id'); if ($pid && $parent = ArticleCategory::find($pid)) { $data['level'] = $parent->level + 1; $data['path'] = $parent->path . $parent->id . '-'; } else { $data['level'] = 1; $data['path'] = '-'; } return parent::store($data); } public function delete(string $ids): mixed { return $this->query()->whereIn($this->primaryKey(), explode(',', $ids))->delete(); } }