Get route and query parameters from URL in Laravel
- How to Get a Parameter from URL in Laravel
- Getting Route Parameters
- Getting Query Parameters
- Getting Parameters in Blade Templates
- Getting Parameters in Middleware
- Summary
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), whileget()may also look in POST data. Usequery()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.
Stay Updated.
I'll you email you as soon as new, fresh content is published.