我正试图像这样对一个雄辩的关系进行分页:
$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');
}
}
eloquent不会返回关系的分页结果吗?
答案 0 :(得分:15)
你不能像那样延迟加载关系分页,而是在你的产品模型中把下面的函数放在你的选项下面有很多关系
public function getOptionsPaginatedAttribute()
{
return $this->options()->paginate(10);
}
这将允许您通过
调用关系数据的分页$product->options_paginated
答案 1 :(得分:0)
创建自定义长度感知分页器。
$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
]);
答案 2 :(得分:-3)
$query = Product::find(1)->get()->options()->paginate();
尝试添加get