使用skip
和take
后,如何从查询中获得总共的记录?
代码工作:
$records = Model::where('active', 1)
->skip(($page -1 ) * $max)
->take($max);
// List of records
$data = $records->get()
//Total of all records including the skip records
$total = $records->paginate()->total();
我想要这种方式,但代码不工作:
$records = Model::where('active', 1)
->skip(($page -1 ) * $max)
->take($max)->get();
//Not Working
$total = $records->paginate()->total();
//Not Working
$total = $records->total();
//Not Working wrong result
$total = $records->count();
如何获取集合中的所有总记录?
直接在您的模型上使用paginate()
方法:
$records = Model::where('active', 1)->paginate($recordsPerPage);
这将返回一个LengthAwarePaginator
实例,它有很多有用的方法:
https://laravel.com/api/7.x/Illuminate/Contracts/Pagination/LengthAwarePaginator.html
如$records->total()
、$records->perPage()
等
在第一个示例中,您的调用paginate((位于Query生成器上。。。(在你做之前->get(((
在第二个例子中,paginate((调用在集合上,在您使用->get((检索结果之后
$records在两者中是不同的,首先是查询生成器,其次是集合
尝试这个
$records = Model::where('active', 1)
->skip(($page -1 ) * $max)
->take($max)->get();
$total = count($records);