1

我试图让无限加载/延迟加载工作,下面是我的代码。

控制器

$categories = Category::with(['products' => function ($query) {
                    $query->where('status', StatusConstant::PT_ACTIVE)->paginate(20);
                    $query->with(['purchased' => function ($query) {
                        $query->where('user_id', $this->user->id);
                    }])->paginate(20);
                }])->get();

看法

@foreach($categories as $category)
    <div id="tabs{{ $category->id }}" class="col s12">
        <div class="contents-tabs">
            @if (isset($category->products))
                <div class="infinite-scroll">
                    @forelse($category->products as $record)
                    <div class="cart-product first">
                        <div class="row">
                            <div class="col s4">
                                <div class="contents">
                                    <img src='{{ asset("/storage/uploads/$record->cover") }}' alt="">
                                </div>
                            </div>
                        </div>
                    </div>
                    @empty
                    <div class="cart-product first">
                        <div class="row">
                            <p class="promo">Null</p>
                        </div>
                    </div>
                    @endforelse
                    {!! $category->products->render() !!}
                </div>
            @endif
        </div>
   </div>
@endforeach

JS

$(function() {
        $('.infinite-scroll').jscroll({
            autoTrigger: true,
            loadingHtml: '<img class="center-block" src="{{ asset('images/loading.gif') }}" alt="Loading..." />',
            padding: 0,
            nextSelector: '.pagination li.active + li a',
            contentSelector: 'div.infinite-scroll',
            callback: function() {
                $('ul.pagination').remove();
            }
        });
    });

错误

[2019-05-08 16:41:37] 生产。错误:方法 Illuminate\Database\Eloquent\Collection::render 不存在。

4

1 回答 1

1

因为该方法确实不存在:)

$categories是 的一个对象Illuminate\Pagination\LengthAwarePaginator,因为你->paginate(10)在链的末端:

$query->with(['purchased' => function ($query) {
    $query->where('user_id', $this->user->id);
}])->paginate(10);
   //^ here

$category->products是 的一个对象Illuminate\Database\Eloquent\Collection

products您必须在调用之前进行分页render()

尝试$category->products()->paginate(10)->render()内部刀片视图或

$categories = Category::with(['products' => function ($query) {
                    $query->where('status', StatusConstant::PT_ACTIVE)->paginate(10);
                                                                      //^
                    $query->with(['purchased' => function ($query) {
                        $query->where('user_id', $this->user->id);
                    }])->paginate(10);
                }])->get();

资源

于 2019-05-08T09:25:17.490 回答