@@ -49,16 +49,24 @@ public function index(Request $request, ResponseFactoryContract $response, User
49
49
$ order = in_array ($ order = $ request ->query ('order ' , 'desc ' ), ['asc ' , 'desc ' ]) ? $ order : 'desc ' ;
50
50
$ since = $ request ->query ('since ' , false );
51
51
$ name = $ request ->query ('name ' , false );
52
-
53
- $ users = $ model ->when ($ since , function ($ query ) use ($ since , $ order ) {
54
- return $ query ->where ('id ' , $ order === 'asc ' ? '> ' : '< ' , $ since );
55
- })->when ($ name , function ($ query ) use ($ name ) {
56
- return $ query ->where ('name ' , 'like ' , sprintf ('%%%s%% ' , $ name ));
57
- })->when (! empty ($ ids ), function ($ query ) use ($ ids ) {
58
- return $ query ->whereIn ('id ' , $ ids )->withTrashed ();
59
- })->limit ($ limit )
60
- ->orderby ('id ' , $ order )
61
- ->get ();
52
+ $ fetchBy = $ request ->query ('fetch_by ' , 'id ' );
53
+
54
+ $ users = $ model
55
+ ->when ($ since , function ($ query ) use ($ since , $ order ) {
56
+ return $ query ->where ('id ' , $ order === 'asc ' ? '> ' : '< ' , $ since );
57
+ })
58
+ ->when ($ name && $ fetchBy !== 'username ' , function ($ query ) use ($ name ) {
59
+ return $ query ->where ('name ' , 'like ' , sprintf ('%%%s%% ' , $ name ));
60
+ })
61
+ ->when (! empty ($ ids ) && $ fetchBy === 'id ' , function ($ query ) use ($ ids ) {
62
+ return $ query ->whereIn ('id ' , $ ids )->withTrashed ();
63
+ })
64
+ ->when ($ name && $ fetchBy === 'username ' , function ($ query ) use ($ name ) {
65
+ return $ query ->whereIn ('name ' , array_filter (explode (', ' , $ name )));
66
+ })
67
+ ->limit ($ limit )
68
+ ->orderby ('id ' , $ order )
69
+ ->get ();
62
70
63
71
return $ response ->json ($ model ->getConnection ()->transaction (function () use ($ users , $ user ) {
64
72
return $ users ->map (function (User $ item ) use ($ user ) {
0 commit comments