不能在hasMany关系上使用分页

时间:2014-09-23 18:40:21

标签: laravel laravel-4 pagination eloquent

这是我的类别模型:

public function products() {
    return $this->hasMany('Product');
}

然后我打印每个类别的所有产品:

@foreach($category->products as $product)
    {{ $product->title }}
@endforeach

但是,它会将所有相关产品打印到此类别。在这种情况下我如何使用分页?我试图在底部打印分页链接:

<div class="pager">
    {{ $category->products()->paginate(12)->links() }}
</div>

它确实正确打印分页链接,但是当我更改页面时 - 内容不会改变。

3 个答案:

答案 0 :(得分:4)

在发送数据之前,首先要对结果进行分页,结果如下。

$products = $category->products()->paginate(12);

现在将此值传递给视图并重复它。

@foreach($products as $product)
    {{$product->title}}
@endforeach

要在视图中的产品上显示链接,只需调用链接方法。

{{$products->links()}}

答案 1 :(得分:2)

您想首先调用您的产品的分页:

public function products() {
     return $this->hasMany('Product');
}

public function recentProducts() {
     return $this->products()->paginate(12);
}

然后在你的视图中循环播放

@foreach($category->recentProducts() as $product)
     {{ $product->title }}
@endforeach

然后你的链接

<div class="pager">
    {{ $category->recentProducts()->links() }}
</div>

答案 2 :(得分:0)

将分页集合传递给视图:

// controller
$products = $category->products()->paginate(12);

// view
@foreach ($products as $product)

   // do what you need
@endforeach

// links:
$products->links();