Set Default Request Values in Laravel Using mergeIfMissing()
The Problem: Handling Missing Inputs
In Laravel applications, you often need default values for request inputs.
Typical approach:
if (! $request->has('status')) {
$request->merge(['status' => 'active']);
}
This works — but adds unnecessary conditions.
The Cleaner Solution: mergeIfMissing()
Laravel provides a simple method:
$request->mergeIfMissing([
'status' => 'active'
]);
Real Project Example
Imagine filtering users:
$request->mergeIfMissing([
'status' => 'active'
]);
$users = User::where('status', $request->status)->get();
Now:
- If user sends status → used
- If not → default applied
Why This Is Useful
It helps you:
- Avoid repetitive
ifchecks - Keep request handling clean
- Set safe defaults easily
- Improve readability
When to Use It
Use it when:
- Setting default filters
- Handling optional API inputs
- Preparing request data before queries