2015-03-31 41 views
1

我已经使用laravel实现了简单的分页。它工作正常。但是,我想添加记录总数并尝试使用方法getTotal(),但它返回空值。Laravel Paginator getTotal返回null - 需要所有页面的总记录数

$records = DB::table('tablename') 
      ->where(condition) 
      .... 
      .... 
      ->simplePaginate(10); 

在视图中,添加链接工作正常。

{{$records->links();}} 

当我使用,

{{$records->getTotal();}} 

返回null。

如果我使用,

{{$records->count();}} 

它返回的指定网页记录的计数。

有什么见解吗?

回答

0

这就是simplePaginate的工作原理。从文档:

如果您只在分页视图中显示“下一个”和“上一个”链接,则可以选择使用simplePaginate方法执行更高效的查询。当您不需要在视图上显示确切的页码时,这对于较大的数据集非常有用。

简单的方法很简单,因为它不需要额外的低效率大表count查询来获得总数。

+0

谢谢。在那种情况下,最好的方法是什么。切换到分页或再次运行整个查询以获取计数。?查询连接近10个表和条件where子句(大约20个字段)来实现搜索功能。 – Chandra 2015-03-31 15:02:08

+0

@Chandra这两种方法重新运行查询,所以我会切换到更简单的代码分页。 – ceejayoz 2015-03-31 15:05:58

1

该分页对象中有方法total()。只需调用该对象。你会得到总数。

例如:$records->total();

0

我有同样的问题,我所做的就是

$records = DB::table('tablename') 
     ->where(condition) 
     .... 
     .... 
     ->paginate(1); //set as 1 

$total = $records->getTotal(); //get total 

然后返回它像这样(我使用AJAX,这就是为什么我回到它作为数组):

return Response::JSON(array(
    'pagination'  => (string) $records->links('pagination::simple'), 
    'total_records' => $total 
)); 
相关问题