Navigation

Laravel

How to Pass an Array to a GET Request in Laravel

Send and receive array data in Laravel GET requests using query parameters. Perfect for filtering, sorting, and passing multiple values to API endpoints.

Table Of Contents

Problem

You need to pass multiple values or arrays as parameters in a GET request for filtering or searching functionality.

Solution

Use array notation in query parameters and Laravel will automatically parse them:

// Frontend: Send array in URL
// GET /api/users?status[]=active&status[]=pending&roles[]=admin&roles[]=user

// Controller: Receive and use arrays
public function index(Request $request)
{
    $statuses = $request->input('status', []);
    $roles = $request->input('roles', []);
    
    $users = User::query()
        ->when($statuses, fn($q) => $q->whereIn('status', $statuses))
        ->when($roles, fn($q) => $q->whereIn('role', $roles))
        ->get();
    
    return response()->json($users);
}

Using Laravel's HTTP Client to send arrays:

// Sending the request
$response = Http::get('https://api.example.com/users', [
    'status' => ['active', 'pending'],
    'roles' => ['admin', 'user'],
    'filters' => [
        'age_min' => 18,
        'age_max' => 65
    ]
]);

// This generates: ?status[]=active&status[]=pending&roles[]=admin&roles[]=user

JavaScript/Frontend example:

// Using URLSearchParams
const params = new URLSearchParams();
['active', 'pending'].forEach(status => params.append('status[]', status));
['admin', 'user'].forEach(role => params.append('roles[]', role));

fetch(`/api/users?${params.toString()}`);

// Or with Axios
axios.get('/api/users', {
  params: {
    'status[]': ['active', 'pending'],
    'roles[]': ['admin', 'user']
  }
});

Why It Works

Laravel automatically converts query parameters with array notation (param[]) into PHP arrays. The input() method handles both scalar values and arrays seamlessly. This enables complex filtering without requiring POST requests for simple data retrieval.

Advanced array handling:

public function search(Request $request)
{
    // Handle nested arrays
    $filters = $request->input('filters', []);
    // URL: ?filters[name]=john&filters[age]=25
    
    // Validate arrays
    $validated = $request->validate([
        'tags' => 'array',
        'tags.*' => 'string',
        'categories' => 'array',
        'categories.*' => 'exists:categories,id'
    ]);
    
    // Use arrays in queries
    return User::whereIn('tag', $validated['tags'] ?? [])
               ->whereIn('category_id', $validated['categories'] ?? [])
               ->get();
}

Related: Laravel Collections: Beyond Basic Array Operations | Laravel Events and Listeners: Building Decoupled Applications | Building Multi-tenant Applications with Laravel: A Comprehensive Guide | Laravel Request Lifecycle: Complete Guide with Examples 2025 | PHP Array Filter: Complete Guide with 7 Powerful Tricks

Share this article

Add Comment

No comments yet. Be the first to comment!

More from Laravel