aybarsalvarci index yöntemine Illuminate\Http\Request sınıfını enjekte edip filtreleme yapabilirsiniz:
public function index(Request $request)
{
$teamId = $request->input('team_id');
$search = $request->input('search');
$orderBy = $request->whenFilled('order_by', function ($input) {
return !in_array($input, ['asc', 'desc'])
? 'desc'
: $input;
}, fn() => 'desc');
$perPage = $request->whenFilled('per_page', function ($input) {
return !is_numeric($input) || $input < 1 || $input > 100
? 25
: $input;
}, fn() => 25);
$users = User::when($teamId, function ($query, $teamId) {
return $query->whereHas('teams', function ($query) use ($teamId) {
$query->where('id', $teamId);
});
})
->when($search, function ($query, $search) {
$query->where('name', 'like', "%{$search}%")
->orWhere('email', 'like', "%{$search}%");
})
->orderBy('created_at', $orderBy)
->paginate($perPage);
return UserResource::collection($users);
}
GET /users?team_id=1&search=gmail&order_by=asc
Ayrıca şu konuya bakarsanız sevinirim:
https://laravel.gen.tr/d/4903-onemli-forumda-kod-paylasirken-dikkat-edilmesi-gerekenler