有没有办法从laravel中的pagination()结果中获取id列表?

时间:2016-06-17 09:25:46

标签: php laravel laravel-4 pagination eloquent

要在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。

1 个答案:

答案 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();