Laravel Filter Query results based on URL Parameters

Laravel Filter Query results based on URL Parameters

Problem Description:

The issue:

How do I pass the following values to the URL. It would also need to have the ability to pass both, the date option and category to the URL, so I can handle it in the controller with the $request->query('') I cannot figure out how to do this?

I have the following Controller:

public function allCoursesList(Request $request)
{
    if (empty($request->query())) {
        return view('pages.all-events', [
            'events' => Events::query()
                ->where('start', '>', now())
                // add pagination
                ->paginate(15)

        ]);
    } else {
        return view('pages.all-events', [
            'events' => Events::query()
                ->where('category', $request->query('category'))
                ->where('start', '>', now())
                // add pagination
                ->paginate(15)

        ]);
    }
}

and I have my filter blade:

<form class="container">
    <div class="bg-custom-gray p-6 rounded-lg">
        <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
            <div>
                <div class="mb-3">Kategorie</div>
                <select class="w-full  p-3 rounded-lg">
                    <option value="0">Lorem Impsum</option>
                    <option value="1">Lorem Impsum</option>
                    <option value="2">Lorem Impsum</option>
                    <option value="3">Lorem Impsum</option>
                    <option value="4">Lorem Impsum</option>
                    <option value="5">Lorem Impsum</option>
                    <option value="6">Lorem Impsum</option>
                    <option value="7">Lorem Impsum</option>
                    <option value="8">Lorem Impsum</option>
                </select>
            </div>
            <div>
                <div class="mb-3">Zeitbereich</div>
                <select class="w-full p-3 rounded-lg">
                    <option>Anstehend</option>
                    <option>Heute</option>
                    <option>Morgen</option>
                    <option>Diese Woche</option>
                    <option>Dieses Wochenende</option>
                    <option>Nächste Woche</option>
                    <option>Nächster Monat</option>
                </select>
            </div>
        </div>
        <x-button type="submit" class="mt-6 w-full">Suchen</x-button>
    </div>
</form>

based on the controller I can pass my category to the query with e.g. example.com/loremimpsum?category=1

Solution – 1

This issue was caused because the <select> was missing a name value.
So by adding name="category"

<select name="category" class="w-full  p-3 rounded-lg">
    <option value="0">Lorem Impsum</option>
    <option value="1">Lorem Impsum</option>
    <option value="2">Lorem Impsum</option>
    <option value="3">Lorem Impsum</option>
    <option value="4">Lorem Impsum</option>
    <option value="5">Lorem Impsum</option>
    <option value="6">Lorem Impsum</option>
    <option value="7">Lorem Impsum</option>
    <option value="8">Lorem Impsum</option>
</select>

I get the wanted URL parameter for the controller. Thank you very much for this info @lagbox

Rate this post
We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept
Reject