要在laravel中进行分页,最简单的方法是:
$items = ModelOfItem::orderBy('my_order_field', 'asc')->paginate(10);
但是,在这个分页中,我需要将另一个表中的数据与此页面相关联。目前,我这样做:
$item_ids = ModelOfItem::orderBy('my_order_field', 'asc')->take(10)->list('id');
$related_items = ModelOfRelatedItem::whereIn($item_ids)->get();
然而,它需要对我已经拥有的数据查询数据库两次,并且在第一页之后处理页面是很痛苦的。有没有办法可以从分页结果中获取id列表,以便我可以直接在第二个表上查询?
P.S。这是一个旧项目,所以它仍在使用Laravel 4.2。
答案 0 :(得分:1)
为什么不使用连接?你可以加入表格和调用->paginate(10)
作为结束方法。如果你仍然想要这种方法,那么你也可以在paginator对象上调用->lists('id')
..就像这样:
$items = ModelOfItem::orderBy('my_order_field', 'asc')->paginate(10);
$item_ids = $items->lists('id');
$related_items = ModelOfRelatedItem::whereIn($item_ids)->get();