'Filter by date range OR member ID
I am trying to filter the data either by date range or by member ID. Below is what I have tried but it returns page not found.
I been tried many ways but still can't display out the data. The route url to blade is all correct however it just not displaying the blade file. It is something wrong in my controller codes?
Controller
$members = Membership::with(['profile'])
->when($request->memberId, function ($query) use ($request) {
$query->where('id', 'LIKE', '%' . $request->value . '%');
})
->when($request->dateStarted, function ($query) use ($request) {
$dateS = date('Y-m-d', strtotime($request->dateStarted));
$query->whereDate('created_at', '>=', $dateS);
})
->when($request->dateEnded, function ($query) use ($request) {
$dateE = date('Y-m-d', strtotime($request->dateEnded));
$query->whereDate('created_at', '<=', $dateE);
})
->latest()
->paginate(15);
Route
Route::get('/members-listing', [$ControllerClass, 'memberListing'])->('members-listing');
and below is the script to call the api through route url
<script>
function generate() {
var route = '{{ route('members-listing') }}';
var filterBy = $('select[name="filter-by"]').val();
var memberId = $('input[name="member-id"]').val();
var dateStarted = $('input[name="date-started"]').val();
var dateEnded = $('input[name="date-ended"]').val();
if (filterBy != null && filterBy == "filter-lead-id") {
route = route + '&filterBy=' + filterBy + '&leadId=' + leadId;
} else if (filterBy != null && filterBy == "filter-date") {
route = route + '&filterBy=' + filterBy + '?dateStarted=' + dateStarted + '&dateEnded=' + dateEnded;
}
window.location.href = route;
}
$(document).ready(function() {
$("#filter-date").hide();
$('#filter-by').change(function() {
$('.filter').hide();
$('#' + $(this).val()).show();
});
});
</script>
Solution 1:[1]
$query = Membership::with(['profile']);
if(isset($request->memberId) && !empty($request->memberId))
{
$query->where('id', 'LIKE', '%' . $request->value . '%');
}
if(isset($request->dateStarted) && !empty($request->dateStarted))
{
$dateS = date('Y-m-d', strtotime($request->dateStarted));
$query->whereDate('created_at', '>=', $dateS);
}
if(isset($request->dateEnded) && !empty($request->dateEnded))
{
$dateE = date('Y-m-d', strtotime($request->dateEnded));
$query->whereDate('created_at', '<=', $dateE);
}
$query->latest()->paginate(15);
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Dip Ghosh |

