belongsTo(Department::class, "pid"); } public function users() { return $this->hasMany(Admin::class, "department_id"); } public function leader() { return $this->hasOne(Admin::class, "id", "leader_id"); } public function manager() { return $this->hasOne(Admin::class, "id", "manager_id"); } public function getTopDepartments() { $all = Department::get()->toArray(); $top_departments = $this->where("pid", 0)->get(); foreach ($top_departments as $department) { $department->descendants = find_children($all, "id", "pid", $department->id); } return $top_departments; } public function getSelections() { $departments = $this->orderby("myindex")->get()->toArray(); $departments = array2tree($departments); $departments = flatten_tree($departments); $level_symbol = "├"; foreach ($departments as &$department) { $level_symbol_prefix = ""; for ($i = 0; $i < $department["level"]; $i++) { $level_symbol_prefix .= $level_symbol; } $department["name"] = $level_symbol_prefix . $department["title"]; } $departments = collect($departments)->pluck("name", "id")->toArray(); return $departments; } }