Laravel Eloquent对人际关系的分页

Jen*_*ang 5 php laravel eloquent

我试图像这样分页一个雄辩的关系:

 $query = Product::find(1)->options()->paginate();
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

Fatal error: Call to a member function getCurrentPage() on a non-object
Run Code Online (Sandbox Code Playgroud)

我已确认代码$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');
    }
}
Run Code Online (Sandbox Code Playgroud)

雄辩不会为关系返回分页结果吗?

小智 15

你不能像那样延迟加载关系分页,而是在你的产品模型中把下面的函数放在你的选项下面有很多关系

public function getOptionsPaginatedAttribute()
{
    return $this->options()->paginate(10);
}
Run Code Online (Sandbox Code Playgroud)

这将允许您通过以下方式调用关系数据的分页

$product->options_paginated
Run Code Online (Sandbox Code Playgroud)