Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

larabeginner22's avatar

How to add simple pagination on search result?

The search form is on my navbar

<form action="{{ request()->path() == 'tasks' ? '/task/search' : (request()->path() == '/' ? '/dashboard/search' : (request()->path() == 'users' ? '/user/search' : (request()->path() == 'roles' ? '/role/search':''))) }}" method="GET" role="search" class="form-inline mr-auto" style="margin-top: 10px">
        {{ csrf_field() }}
    <ul class="navbar-nav mr-3;" >
    <li><a href="" data-toggle="sidebar" class="nav-link nav-link-lg"><i class="fas fa-bars" style="color: black"></i></a></li>
    <li><a href="#" data-toggle="search" class="nav-link nav-link-lg d-sm-none"><i class="fas fa-search"></i></a></li>
    </ul>
    {{-- search --}}


    <div class="search-element">
    <input type="text" class="form-control" type="search" placeholder="Search" aria-label="Search" data-width="250" method="GET" name="term" id="term">
    <button class="btn" type="submit"><i class="fas fa-search"></i></button>

    </div>
    </form>

dashboardControlller search funtion

 public function search(Request $request)
    {
        $task_list = DB::table('tasks')
            ->select('tasks.id', 'tasks.title', 'tasks.pic', 'users.name', 'users.image', 'tasks.start', 'tasks.end', 'tasks.delay', 'tasks.status', 'tasks.file', 'tasks.picfile', 'tasks.created_at')
            ->join('users', 'tasks.user_id', '=', 'users.id')
            ->where(function ($query) use ($request) {
                if (($term = $request->term)) $query->orWhere('tasks.title', 'LIKE', '%' . $term . '%')->orWhere('users.name', 'LIKE', '%' . $term . '%');
            })
            ->orderBy('created_at', 'desc')
            ->simplePaginate(6);
        $OngoingCount = Task::where(function ($query) use ($request) {
            if (($term = $request->term)) $query->Where('title', 'LIKE', '%' . $term . '%')->orWhere('tasks.pic', 'LIKE', '%' . $term . '%');
        })
            ->Where('status', 'Ongoing')
            ->count();
        $DelayedCount = Task::where(function ($query) use ($request) {
            if (($term = $request->term)) $query->Where('title', 'LIKE', '%' . $term . '%')->orWhere('tasks.pic', 'LIKE', '%' . $term . '%');
        })
            ->where('status', 'Delayed')
            ->count();
        $FinishedCount = Task::where(function ($query) use ($request) {
            if (($term = $request->term)) $query->Where('title', 'LIKE', '%' . $term . '%')->orWhere('tasks.pic', 'LIKE', '%' . $term . '%');
        })
            ->where('status', 'Finished')
            ->count();

        return view('home', compact('OngoingCount', 'DelayedCount', 'FinishedCount', 'task_list'));
    }
}

route

Route::get('/dashboard/search', [dashboardController::class, 'search']);
Route::get('/task/search', [TaskController::class, 'search']);
Route::get('/user/search', [UserController::class, 'search']);
Route::get('/role/search', [RoleController::class, 'search']);

The problem is i put my search function on navbar so in any menu there is only one search form so i need to make ternary inside the search form, then when the user search on any menu that has more than the pagination it will be reset before the search query is performed

0 likes
1 reply
Tray2's avatar

Are we talking about how to display it on the search result pages?

In that case

{{ $task_list->links() }}

Please or to participate in this conversation.