Level 1
Hello friend, do you need to do a search between a range of dates?
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
who can i implement searching the data by passing the two date from the form help me to correct the query below
institutes table
| id | name |
users table
| id | institute_id | name|
deliveries table
|id | user_id| name
data passed from form can be institute_id or user_id or (start_date or end date ) from abnormal or all
$deliveries = Delivery::when($request->search_query, function ($query, $request) {
return $query->where(function ($query) use ($request) {
$query->whereBetween('created_at', [$request->start_date, $request->end_date]);
});
})->when($request->institute && $request->institute != 'all', function ($query) use ($request) {
return $query->whereHas('user.institute', function ($query) use ($request) {
$query->where('id', $request->institute_id);
});
})->when($request->user && $request->user != 'all', function ($query) use ($request) {
return $query->whereHas('user', function ($query) use ($request) {
$query->where('id', $request->user_id);
});
})->orderBy('id', 'desc')->get();
dd($deliveries);
What results do you have so far?
I rewrite the first part of your query and hope it will help:
Delivery::when($request->filled('start_date'), function ($query, $request) {
return $query->where('created_at', '>=', $request->start_date);
})
->when($request->filled('end_date'), function ($query, $request) {
return $query->where('created_at', '<=', $request->end_date);
})
Or simpler:
Delivery::when(request()->filled('start_date'), function ($query) {
return $query->where('created_at', '>=', request('start_date'));
})
->when(request()->filled('end_date'), function ($query) {
return $query->where('created_at', '<=', request('end_date'));
})
Please or to participate in this conversation.