diff --git a/catch/user/model/UserSearch.php b/catch/user/model/UserSearch.php index b3d9bbc..517aae5 100644 --- a/catch/user/model/UserSearch.php +++ b/catch/user/model/UserSearch.php @@ -1 +1,20 @@ whereLike('username', $value); + } + + public function searchEmailAttr($query, $value, $data) + { + return $query->whereLike($this->aliasField('email'), $value); + } + + public function searchStatusAttr($query, $value, $data) + { + return $query->where($this->aliasField('status'), $value); + } +} diff --git a/catch/user/model/Users.php b/catch/user/model/Users.php index d9909f8..9dd814c 100644 --- a/catch/user/model/Users.php +++ b/catch/user/model/Users.php @@ -1,15 +1,18 @@ field(['id', 'username', 'email', 'status','last_login_time','last_login_ip', 'department_id','created_at', 'updated_at']) - ->when($search['username'] ?? false, function ($query) use ($search){ - $query->whereLike('username', '%' . $search['username'] . '%'); - }) - ->when($search['email'] ?? false, function ($query) use ($search){ - $query->whereLike('email', '%' . $search['email'] . '%'); - }) - ->when($search['status'] ?? false, function ($query) use ($search){ - $query->where('status', $search['status']); - }) - ->order('id', 'desc') + ->withoutField(['updated_at'], true) + ->catchSearch() + ->catchLeftJoin(Department::class, 'id', 'department_id', ['department_name']) + ->order('users.id', 'desc') ->paginate($search['limit'] ?? $this->limit); }