when(isset($params['id']) && $params['id'] !== '',function($query) use ($params){ $query->where('id', (int)$params['id']); }) ->when(isset($params['uid']) && $params['uid'] !== '',function($query) use ($params){ $query->where('uid', (int)$params['uid']); }) ->when(isset($params['mer_id']) && $params['mer_id'] !== '',function($query) use ($params){ $query->where('mer_id', (int)$params['mer_id']); }) ->when(isset($params['level_id']) && $params['level_id'] !== '',function($query) use ($params){ $query->where('level_id', (int)$params['level_id']); }) ->when(isset($params['status']) && $params['status'] !== '',function($query) use ($params){ $query->where('status', (int)$params['status']); }) ->when(isset($params['merchant_type']) && $params['merchant_type'] !== '',function($query) use ($params){ $levelIds = app()->make(MerchantShareholderLevelRepository::class) ->getSearchModel(['merchant_type'=>$params['merchant_type']]) ->column('id'); $query->whereIn('level_id', $levelIds); }) ->when(isset($params['search_text']) && $params['search_text'] !== '',function($query) use ($params){ $uids = app() ->make(UserRepository::class) ->getSearch([]) ->where('uid|nickname|phone','like',"%{$params['search_text']}%") ->column('uid'); $query->whereIn('uid', $uids); }) ->with([ 'user' => function($query){ $query->field('uid,nickname,avatar,phone'); }, 'merchant' => function($query){ $query->field('mer_id,mer_avatar,mer_name'); }, 'level' => function($query){ $query->field('id,title as level_name')->bind(['level_name']); } ]) ->order('create_time DESC,id DESC'); } }