Get route and query parameters from URL in Laravel

laravel
tutorial
url
Nabil Hassen
Nabil Hassen
Oct 7, 2025
Get route and query parameters from URL in Laravel
Last updated on Oct 7, 2025
Table of contents:

How to Get a Parameter from URL in Laravel

In Laravel, getting parameters from the URL is a common task, especially when working with routes, controllers, and requests. Whether it’s a route parameter (e.g., /users/{id}) or a query parameter (e.g., /users?id=5), Laravel provides clean, expressive ways to retrieve them.

Getting Route Parameters

Route parameters are defined in your routes/web.php or routes/api.php file. For example:

Route::get('/users/{id}', [UserController::class, 'show']);

In this route, {id} is a dynamic parameter that Laravel automatically passes to your controller method. Inside the UserController:

use Illuminate\Http\Request;
 
public function show(Request $request, $id)
{
// You can directly use the parameter
$user = User::findOrFail($id);
 
// You can also retrieve it from the request
$idFromRoute = $request->route('id');
 
return view('users.show', compact('user', 'idFromRoute'));
}

If you only need the parameter and not the Request instance:

public function show($id)
{
$user = User::findOrFail($id);
return view('users.show', compact('user'));
}

Tip: When combining dependency injection (like Request) and route parameters, always place route parameters after injected dependencies.

You can also get route parameters using the global request() helper:

$id = request()->route('id');

Getting Query Parameters

Query parameters appear after a ? in a URL, such as /users?status=active.

Laravel provides several ways to get them:

Using the Request instance:

use Illuminate\Http\Request;
 
public function index(Request $request)
{
// Get 'status' query parameter
$status = $request->query('status', 'active'); // default value if missing
 
$users = User::where('status', $status)->get();
 
return view('users.index', compact('users', 'status'));
}

Using the request() helper:

$status = request()->query('status');

Or a shorthand version:

$status = request('status');

To get all query parameters as an associative array:

$params = request()->query();

Note: query() only retrieves values from the query string (GET parameters), while get() may also look in POST data. Use query() for cleaner intent.

Getting Parameters in Blade Templates

You can also access parameters directly inside Blade templates.

Route parameter:

{{ request()->route('id') }}

Query parameter:

{{ request('status') }}

Getting Parameters in Middleware

If you need to read parameters before the controller runs, you can do it in middleware:

public function handle($request, Closure $next)
{
$id = $request->route('id');
$status = $request->query('status');
 
// Optionally modify the request
$request->merge(['source' => 'middleware']);
 
return $next($request);
}

Summary

Type Example URL Laravel Method
Route Parameter /users/15 $request->route('id') or $id argument
Query Parameter /users?status=active $request->query('status') or request('status')

Laravel makes retrieving both route and query parameters simple and consistent across controllers, middleware, and views. Following these official patterns ensures your code stays clean, predictable, and aligned with Laravel best practices.

Nabil Hassen
Nabil Hassen
Full Stack Web Developer

Stay Updated.

I'll you email you as soon as new, fresh content is published.

Thanks for subscribing to my blog.

Latest Posts