【问题标题】:"Skip" method in a Laravel CollectionLaravel 集合中的“跳过”方法
【发布时间】:2018-07-30 01:51:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: php laravel eloquent laravel-query-builder laravel-collection


    【解决方案1】:

    skip($n) 方法确实不包含在 Collection 类中,但是有一个函数可以做到这一点:slice($n)

    QueryBuilder(取自文档):

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

    或者,您可以使用 limit 和 offset 方法:

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

    收藏:

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

    QueryBuilder 类中的许多方法在Collection 类中不可用,反之亦然。但是它们都有类似的功能,例如QueryBuilderwhere功能,您可以使用Collectionfilter功能来达到类似的效果。

    【讨论】:

      【解决方案2】:

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

      $collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9]);
      
      $chunk = $collection->forPage(2, 3);
      
      $chunk->all();
      

      【讨论】:

      • 您能否进一步解释这与原始问题的关系?
      猜你喜欢
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 2018-05-07
      • 2015-08-31
      相关资源
      最近更新 更多