model->setBeforeGetList(function ($query) { return $query->with(['permissions' => function ($query) { $query->select('id'); }])->dataRange(); })->getList(); } public function store(RoleRequest $request) { return $this->model->storeBy($request->all()); } public function show($id) { $role = $this->model->firstBy($id); $role->setAttribute('permissions', $role->permissions()->get()->toTree()); $role->setAttribute('departments', $role->departments()->get()->toTree()); return $role; } public function update($id, RoleRequest $request) { return $this->model->updateBy($id, $request->all()); } public function destroy($id) { if ($this->model->where($this->model->getParentIdColumn(), $id)->first()) { throw new FailedException('请先删除子级'); } return $this->model->deleteBy($id); } }