Alewa's avatar
Level 2

Laravel 8 pagination link error

I am having this laravel 8 error Method Illuminate\Database\Eloquent\Collection::links does not exist. (View: C:\xampp\htdocs\ramiras\resources\views\products.blade.php), I am not using {{ $products->links() }} and i don't want to use pagination but i am having link error. My controller

<?php

namespace App\Http\Controllers;

use App\Models\Product;
use App\Models\Category;
use Auth;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Session;
use Carbon\Carbon;
use Illuminate\Support\Facades\View;
use Illuminate\Pagination\Paginator;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    public function index(){
      Paginator::useBootstrap();

      $products = Product::where('status','1')->latest()->paginate(2);
      return view('products',compact('products'));
    }

    public function details($slug){

      $product = Product::where(['slug'=>$slug,'status'=>1])->first();
      $latestproducts = Product::where('status','1')->latest()->take(4)->get();

      return view('product_detail',compact('product','latestproducts'));
    }

    public function categoryProducts($slug){
      if(Category::where('slug', $slug)->exists()){

        $category = Category::where('slug', $slug)->first();
        $products = Product::where('category_id',$category->id)->get();
        return view('products',compact('products','category'));
      }else{
        //
      }

    }
}

My web.php file

Route::get('/cat_products/{slug}','ProductController@categoryProducts');

My Products.php model file

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use HasFactory;

    public function category(){
      return $this->belongsTo('App\Models\Category','category_id');
    }
}

My cat_products.blade.php file

@extends('frontend.layouts.app')

@section('main-content')

  <section class="food">
	  <div class="container">
	    <h1 class="title text-center">{{ $category->name }}</h1>
	    <div class="row pt-5">
      @forelse($products as $product)
		  <div class="col-lg-3 col-md-6 mb-lg-0 mb-5">
		    <div class="card">
			  <a href="{{ url('product_detail',$product->slug) }}">
			    <img src="{{ asset('public/assets/backend/images/product/'.$product->image) }}" class="img-fluid">
			    <div class="pt-3">
			      <h4>{{ $product->name }}</h4>
				  <p>Ingriedence: {!! Str::limit($product->ingredients,9) !!}</p>
				  <span>GHC {{ $product->price }} <del>GHC {{ $product->del_price }}</del></span>
				  <a class="main-btn" href="{{ url('product_detail',$product->slug) }}">Read More</a>
			    </div>
			  </a>
			</div>
          </div>
          @empty
          <div class="text-center"><h4>No Products Available</h4></div>
        @endforelse
		</div>
	  </div>
	</section>

@endsection

So this link error? any help?

0 likes
2 replies
tykus's avatar
tykus
Best Answer
Level 104

The problem is not with cat_products.blade.php; but with products.blade.php (as is mentioned in the error message!); what does that template look like?

If you look at the catProducts action; you return the products.blade.php view template, not the cat_products template; perhaps this is the issue????

Please or to participate in this conversation.