search($where) ->when(isset($where['field_key']) && $where['field_key'] && isset($where['keyword']) && $where['keyword'], function ($query) use ($where) { switch ($where['field_key']) { case 'card_number': $query->whereLike('card_number', "%{$where['keyword']}%"); break; case 'nickname': $query->whereIn('uid', 'in', function ($q) use ($where) { $q->name('user')->whereLike('nickname', '%' . $where['keyword'] . '%')->field(['uid'])->select(); }); case 'uid': $query->where('uid', $where['keyword']); break; } }) ->when($page && $limit, function ($query) use ($page, $limit) { $query->page($page, $limit); }) ->order($order)->select()->toArray(); } }