toArray(); } public function batchGetCampus(array $ids): array { if (empty($ids)) { return []; } $campuses = Campus::whereIn('id', $ids)->get()->toArray(); return array_column($campuses, null, 'id'); } public function getCampusByProvince(string $province): array { return Campus::province($province) ->level(3) ->get() ->toArray(); } public function getCampusByCity(string $province, string $city): array { return Campus::province($province) ->city($city) ->level(3) ->get() ->toArray(); } public function getCampusHierarchy(int $campusId): array { $hierarchy = []; $current = Campus::find($campusId); if (! $current) { return $hierarchy; } // 从校区向上追溯层级 while ($current) { array_unshift($hierarchy, [ 'id' => $current->id, 'name' => $current->name, 'level' => $current->level, 'province' => $current->province, 'city' => $current->city, ]); if ($current->parent_id === 0) { break; } $current = Campus::find($current->parent_id); } return $hierarchy; } }