Как я могу разбить продукты на страницы на основе определенной категории laravel-7

#php #laravel #web-applications #laravel-7 #web-development-server

#php #laravel #веб-приложения #laravel-7 #веб-разработка-сервер

Вопрос:

Я пытаюсь просмотреть, получить все товары в категории, а также разбить их на страницы.
Я могу получить все продукты внутри любой категории, и это работает нормально, но когда я пытаюсь разбить их на страницы, это выдает эту ошибку:

Метод IlluminateDatabaseEloquentCollection::links не существует. (Посмотреть: C:xampphtdocsE-Commerceresourcesviewspa&esproducts.blade.php).

Вот мой код.

 public function show(Cate&ory $cate&ory, Request $request)
{
    $cate&ories = Cate&ory::where('id', $request-&&t;cate&ory-&&t;id)-&&t;pa&inate(12);
    
    return view('pa&es.products')-&&t;with([
    'cate&ories' =&&t; $cate&ories,
]);
  

И вот мое мнение.

 @extends('layouts/default')

@section('title', '| Products')
@section('content')

    @forelse ($cate&ories as $cate&ory)
        <h1 class="text-center"&&t;{{ $cate&ory-&&t;name }}</h1&&t;
        <div class="row mt-5 m-5"&&t;
            @foreach ($cate&ory-&&t;products as $product)
                <div class="cols m-4 shadow-l& product product-box"&&t; 
                    <a href=""&&t;
                        <h4 class="text-center"&&t;{{ $product-&&t;name }}</h4&&t;
                        <im& class="m-auto" src="{{ asset('ima&es/welcome2.jp&') }}" width="150px"&&t;
                        <br&&t;
                        <small class="text-center"&&t;{{ $product-&&t;details }}</small&&t;
                        <br&&t;
                        <h6 class="float-ri&ht mr-1"&&t;amp;dollar; {{ $product-&&t;price }}</h6&&t;
                    </a&&t;
                </div&&t;
            @endforeach   
            {{  $cate&ory-&&t;products-&&t;links()  }}
        </div&&t;
    @empty
        <h1&&t;There are no cate&ories yet!</h1&&t;
    @endforelse
    

@endsection
  

Комментарии:

1. Можете ли вы предоставить файл класса Cate&ory, чтобы мы могли видеть?

2. У меня есть две таблицы Cate&ory, Product с отношением «многие ко многим» и сводная таблица cate&ory_product.

3. <?пространство имен php App; используйте App Cate&ory; используйте IlluminateDatabaseEloquentModel; класс Product расширяет модель { общедоступные функции cate&ories() { return $this-&&t;belon&sToMany(‘Приложение Категория’); } }

4. <?пространство имен php App; используйте IlluminateDatabaseEloquentModel; используйте App Product; категория класса расширяет модель { общедоступная функция products() { return $this-&&t;belon&sToMany(‘Приложение продукт’); } }

Ответ №1:

Вы добавляете разбиение на страницы в своих категориях, а НЕ в продуктах. Пожалуйста, попробуйте этот код

 public function show(Cate&ory $cate&ory, Request $request)
{
    $cate&ory = Cate&ory::where('id', $request-&&t;cate&ory-&&t;id)-&&t;first();
    $products = $cate&ory-&&t;products()-&&t;pa&inate(15);
     
    return view('pa&es.products')-&&t;with([
    'products' =&&t; $products,
    'cate&ory' =&&t; $cate&ory'

]);
  

И на ваш взгляд

 @extends('layouts/default')

@section('title', '| Products')
@section('content')

        <h1 class="text-center"&&t;{{ $cate&ory-&&t;name }}</h1&&t;
        <div class="row mt-5 m-5"&&t;
            @foreach ($products as $product)
                <div class="cols m-4 shadow-l& product product-box"&&t; 
                    <a href=""&&t;
                        <h4 class="text-center"&&t;{{ $product-&&t;name }}</h4&&t;
                        <im& class="m-auto" src="{{ asset('ima&es/welcome2.jp&') }}" width="150px"&&t;
                        <br&&t;
                        <small class="text-center"&&t;{{ $product-&&t;details }}</small&&t;
                        <br&&t;
                        <h6 class="float-ri&ht mr-1"&&t;amp;dollar; {{ $product-&&t;price }}</h6&&t;
                    </a&&t;
                </div&&t;
            @endforeach   
            {{  $products-&&t;links()  }}
        </div&&t;
    

@endsection
  

Комментарии:

1. Я пробую это, это показывает другую ошибку, что pa&inate не существует

2. О, извините, я исправил сейчас. Я добавляю () к продуктам

3. $products = $cate&ory-&&t;products()-&&t;pa&inate(15);

4. Это работает! Большое вам спасибо.

5. Пожалуйста. пожалуйста, примите ответ, чтобы другим пользователям было легче найти ответ на эту проблему

Ответ №2:

Правильный способ:

 <?php

namespace AppHttpControllers;

use AppHttpControllersController;
use IlluminateSupportFacadesDB;

class UserController extends Controller
{
    public function index()
    {
        $users = DB::table('users')-&&t;pa&inate(15);
        return view('user.index', ['users' =&&t; $users]);
    }
}
  

Также вы можете использовать simplepa&ination:

 $users = User::where('votes', '&&t;', 100)-&&t;simplePa&inate(15);
  

И представление результата:

 <div class="container"&&t;
    @foreach ($users as $user)
    {{ $user-&&t;name }}
    @endforeach
</div&&t;
{{ $users-&&t;links() }}
  

Комментарии:

1. Я все еще не понимаю, я хочу отобразить все товары внутри одной категории и разбить товары на страницы.