Laravel Красноречивое разбиение на страницы отношений

Я пытаюсь разбивать отношения с Красноречием:

$query = Product::find(1)->options()->paginate(); 

Но я получаю следующую ошибку:

 Fatal error: Call to a member function getCurrentPage() on a non-object 

Я подтвердил, что код $query = Product::find(1)->options() возвращает набор опций. Объект $query имеет тип hasMany . Ниже приведены классы моделей, которые я использую.

 class Product extends Eloquent { protected $table = 'products'; public function options () { return $this->hasMany('ProductOption', 'product_id'); } } class ProductOption extends Eloquent { protected $table = 'product_options'; public function product() { return $this->belongsTo('Product', 'product_id'); } } 

Неужели красноречивый не возвращает разбитые на страницы результаты для отношений?

Вы не можете ленить такую ​​реляционную разбивку на нагрузку, вместо этого в вашей модели продукта добавьте следующую функцию ниже ваших вариантов, у которой много отношений

 public function getOptionsPaginatedAttribute() { return $this->options()->paginate(10); } 

Это позволит вам называть разбиение на страницы на реляционные данные на

 $product->options_paginated 

Создайте персонализированный указатель длины.

 $options = new LengthAwarePaginator(Product::find(1)->options()-> ->skip(($request->input('page', 1) - 1) * 10)->take(10)->get(), Product::find(1)->options()->count(), 10, $request->input('page', 1), [ // paginator options here ]); 
 $query = Product::find(1)->get()->options()->paginate(); 

Попробуйте добавить get