如何在模型关系中使用 Laravel 分页?
How to use Laravel Pagination with models relationsips?
我有类别和项目表。每个项目只属于一个类别,每个类别有很多项目。因此,在类别模型中我定义了这种关系:
public function items()
{ return $this->hasMany('Item', 'catid'); }
并且我通过这种方式检索类别的数据:
$category = Category::find($id);
return View::make('admin.categories.catdetails')->with('category', $category);
在我看来,我可以遍历数据:
@foreach ($category->items as $item)
<tr>
<td> {{ $item->name }} </td>
<td> {{number_format($item->price, 2, '.', '')}} </td>
</tr>
@endforeach
但这会导致页面上的所有项目。如果一页有这么多项目,如何使用 laravel 分页?
我该如何使用
::paginate() // in controller or model
->links() // in view
到目前为止,它抛出了很多错误,我无法弄清楚。
提前致谢。
您可以在关系对象上调用 paginate()
,您可以通过 ->items()
(而不是 ->items
)
访问它
$items = $category->items()->paginate(10);
return View::make('admin.categories.catdetails')
->with('category', $category)
->with('items', $items);
那么在你看来:
@foreach ($items as $item)
并且:
$items->links()
您可以使用属性访问器来实现您想要的。在您的模型中:
public function getPaginatedItemsAttribute(){
return $this->items()->paginate(10);
}
然后你像这样使用它:
@foreach ($category->paginatedItems as $item)
并且:
$category->paginatedItems->links()
我有类别和项目表。每个项目只属于一个类别,每个类别有很多项目。因此,在类别模型中我定义了这种关系:
public function items()
{ return $this->hasMany('Item', 'catid'); }
并且我通过这种方式检索类别的数据:
$category = Category::find($id);
return View::make('admin.categories.catdetails')->with('category', $category);
在我看来,我可以遍历数据:
@foreach ($category->items as $item)
<tr>
<td> {{ $item->name }} </td>
<td> {{number_format($item->price, 2, '.', '')}} </td>
</tr>
@endforeach
但这会导致页面上的所有项目。如果一页有这么多项目,如何使用 laravel 分页? 我该如何使用
::paginate() // in controller or model
->links() // in view
到目前为止,它抛出了很多错误,我无法弄清楚。 提前致谢。
您可以在关系对象上调用 paginate()
,您可以通过 ->items()
(而不是 ->items
)
$items = $category->items()->paginate(10);
return View::make('admin.categories.catdetails')
->with('category', $category)
->with('items', $items);
那么在你看来:
@foreach ($items as $item)
并且:
$items->links()
您可以使用属性访问器来实现您想要的。在您的模型中:
public function getPaginatedItemsAttribute(){
return $this->items()->paginate(10);
}
然后你像这样使用它:
@foreach ($category->paginatedItems as $item)
并且:
$category->paginatedItems->links()