Support the ongoing development of Laravel.io →
Blade Eloquent

I am working on a blogging application in Laravel 8.

In the ArticlesController controller I have this method to display the paginated articles:

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use App\Models\ArticleCategory;
use App\Models\Article;
use App\Models\Comment;

class ArticlesController extends FrontendController {

	// Articles per page
	protected $per_page = 12;

	public function index(Request $request) {

		// Search query
		$qry = $request->input('search');

		$articlesQuery = Article::where('title', 'like', '%' . $qry . '%')
											->orWhere('short_description', 'like', '%' . $qry . '%')
											->orWhere('content', 'like', '%' . $qry . '%');

		// Search results count
		if ($qry) {
			$article_count = $articlesQuery->count();
		}	

		$articles = $articlesQuery->orderBy('id', 'desc')->paginate($this->per_page);	
		$featured_articles = Article::where('featured', 1)->orderBy('id', 'desc')->get();

		return view('themes/' . $this->theme_directory . '/templates/index', 
			array_merge($this->data, [
				'search_query' => $qry,
				'articles' => $articles,
				'featured_articles' => $featured_articles,
				'article_count' => $article_count ?? null
			])
		);
	}
	
}

The pagination, in the plain HTML template, looks like this:

<nav class="pgn">
  <ul>
      <li>
        <a class="pgn__prev" href="#0">Prev</a>
      </li>
      <li><a class="pgn__num" href="#0">1</a></li>
      <li><span class="pgn__num current">2</span></li>
      <li><a class="pgn__num" href="#0">3</a></li>
      <li><span class="pgn__num dots">…</span></li>
      <li><a class="pgn__num" href="#0">4</a></li>
      <li>
         <a class="pgn__next" href="#0">Next</a>
      </li>
  </ul>
</nav>

The goal

The goal is to keep the pagination structure above, in Laravel's Blade.

The problem

The code below works for the "Next" and "Prev" buttons, but not the links in between.

<nav class="pgn">
  <ul>
      <li>
        <a class="pgn__prev" href="{{ $articles->withQueryString()->previousPageUrl() }}">Prev</a>
      </li>

      	{{ $articles->withQueryString()->links() }}

      <li>
         <a class="pgn__next" href="{{ $articles->withQueryString()->nextPageUrl() }}">Next</a>
      </li>
  </ul>
</nav>

Questions

  1. What causes this bug?
  2. What is the easiest fix?
0

Sign in to participate in this thread!

PHPverse

Your banner here too?

Razvan ajax30 Joined 2 Oct 2021

Moderators

We'd like to thank these amazing companies for supporting us

Your logo here?

Laravel.io

The Laravel portal for problem solving, knowledge sharing and community building.

© 2025 Laravel.io - All rights reserved.