GobssRuiz's avatar

Filter data and change pagination link

The filter works, but when I change the page, the link doesn't come with the query string, just the page number. How do I make the link in the query string keep the search/filter

            $data = Link::where('status', 'active');
            $data = $data->join('link_pages', 'links.id', 'link_id');
      
            // Parameters
            if (isset($_GET['title']) && !empty($_GET['title'])) {
                $data = $data->where('links.title', 'LIKE', '%'.$_GET["title"].'%');
            }
            if (isset($_GET['link']) && !empty($_GET['link'])) {
                $data = $data->where('links.link', 'LIKE', '%'.$_GET["link"].'%');
            }
            if (isset($_GET['cPage']) && !empty($_GET['cPage'])) {
                $data = $data->where('page', '=', $_GET["cPage"]);
            }
      
            $data = $data->paginate(5);

            return  view('admin.links.index', compact(['data']));
          <div class="my-3">
                <ul class="pagination c-pagination mb-0">
                    {{$data->links()}}
                </ul>
            </div>
0 likes
1 reply
tisuchi's avatar
tisuchi
Best Answer
Level 70

@gobssruiz Use appends() .

$data = Link::where('status', 'active');
$data = $data->join('link_pages', 'links.id', 'link_id');

// Parameters
if (isset($_GET['title']) && !empty($_GET['title'])) {
    $data = $data->where('links.title', 'LIKE', '%'.$_GET["title"].'%');
}
if (isset($_GET['link']) && !empty($_GET['link'])) {
    $data = $data->where('links.link', 'LIKE', '%'.$_GET["link"].'%');
}
if (isset($_GET['cPage']) && !empty($_GET['cPage'])) {
    $data = $data->where('page', '=', $_GET["cPage"]);
}

$data = $data->paginate(5)->appends(request()->query());

return  view('admin.links.index', compact(['data']));

2 likes

Please or to participate in this conversation.