belongsToMany(SysRole::class, SysUserRole::class, 'role_id', 'user_id'); } public function getAuthoritiesAttr(): array { $menus = []; $this->roles->load(['menus']); $roleIds = $this->roles->column('role_id'); dd($roleIds); foreach ($this->roles as $role) { $menus = array_merge($menus, $role->menus->hidden(['pivot'])->where('deleted', 0)->toArray()); } $uniqueMenus = []; foreach ($menus as $menu) { $uniqueMenus[$menu['menuId']] = $menu; } $array = array_values($uniqueMenus); usort($array, function($a, $b) { return $a['sortNumber'] <=> $b['sortNumber']; }); return $array; } /** * Attr@性别 * @param $value * @param $data * @return string */ public function getSexNameAttr($value, $data): string { return (string)dict_get('sex.' . $data['sex'], '未知'); } public function searchOrganizationIdAttr(Query $query, int $value, array $data): void { ($value > 0) && $query->where('organization_id', $value); } public function searchCreateTimeAttr($query, array $value): void { $query->whereBetweenTime('create_time', $value[0], $value[1]); } public function searchNicknameAttr(Query $query, string $value): void { $value != "" && $query->where('nickname', 'like', '%' . $value . '%'); } public function searchUsernameAttr(Query $query, string $value): void { $value != "" && $query->where('username', 'like', '%' . $value . '%'); } public function searchSexAttr(Query $query, int $value): void { ($value > 0) && $query->where('sex', '=', $value); } public function searchStatusAttr(Query $query, int $value): void { ($value > 0) && $query->where('status', '=', $value); } public function searchEmailAttr(Query $query, string $value): void { $value != "" && $query->where('email', 'like', '%' . $value . '%'); } public function searchPhoneAttr(Query $query, string $value): void { $value != "" && $query->where('phone', 'like', '%' . $value . '%'); } public function searchIdCardAttr(Query $query, string $value): void { $value != "" && $query->where('id_card', 'like', '%' . $value . '%'); } }