"Skip" 方法在 Laravel 集合中

"Skip" method in a Laravel Collection

在查询生成器 (\Illuminate\Database\Query\Builder) 中,可以同时使用 skip($n) and take($n) 方法。

在集合(\Illuminate\Support\Collection)中,可以使用take($n)函数,但是没有skip($n)函数。

为什么会这样,还有其他选择吗?

skip($n)方法确实没有包含在Collectionclass中,但是有一个函数做同样的事情:slice($n).

QueryBuilder(取自文档):

$users = DB::table('users')->skip(10)->take(5)->get();

Alternatively, you may use the limit and offset methods:

$users = DB::table('users')
                ->offset(10)
                ->limit(5)
                ->get();

Collection:

collect([1, 2, 3, 4])->slice(2)->all(); //[3, 4]

QueryBuilder class 中的许多方法在 Collection class 和 vice-versa 中不可用。但是两者都有相似的功能,像QueryBuilderwhere function, you'd use Collection's filter功能也能达到相似的效果。

forPage 方法 returns 一个新集合,其中包含将出现在给定页码上的项目。该方法接受页码作为第一个参数,每页显示的项目数作为第二个参数:

$collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9]);

$chunk = $collection->forPage(2, 3);

$chunk->all();