Php 在《拉雷维尔雄辩》中,极限与承受之间的区别是什么?

Php 在《拉雷维尔雄辩》中,极限与承受之间的区别是什么?,php,laravel,eloquent,Php,Laravel,Eloquent,在文档中,它显示了以下内容: 要限制查询返回的结果数,或在查询中跳过给定数量的结果,可以使用skip和take方法: $users = DB::table('users')->skip(10)->take(5)->get(); 或者,您可以使用限制和偏移方法: $users = DB::table('users') ->offset(10) ->limit(5) ->get(); 这两

在文档中,它显示了以下内容:

要限制查询返回的结果数,或在查询中跳过给定数量的结果,可以使用skip和take方法:

$users = DB::table('users')->skip(10)->take(5)->get();
或者,您可以使用限制和偏移方法:

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

这两者有什么区别?执行速度有什么不同吗?

对于查询生成器,
take()
只是
limit()
的别名:


NB这不能与集合上的
take()
混淆。

limit
仅适用于有说服力的ORM或查询生成器对象,而
take
适用于集合和ORM或查询生成器对象

Model::get()->take(20);   // Correct
Model::get()->limit(20);  // Incorrect

Model::take(20)->get()    // Correct
Model::limit(20)->get()   // Correct

限制对eleqoent有效。主要与offset连用

e、 g

在上面的例子中,它意味着从第10个元素(偏移量)开始获得10个元素(限制)


Take主要用于集合,但也可以用作雄辩模型的limit别名

skip也是offset的别名吗?@rotaercz是的,它是:)它不是“唯一”别名!这完全取决于您使用的是集合还是“雄辩的集合”,后者是别名类型,但如果您使用集合,它只会限制您从RDBMS中了解的集合对象的函数类型。参见source我为使用google到处跑的人添加了这条评论,他们不知道EloquentCollection与集合不同,但与集合非常相似。@Kyslik OP的问题专门与查询生成器有关,甚至没有提到集合。在
Support\Collection
elokent\Collection
上都没有
limit()
offset()
方法。我知道,这就是为什么我添加了“我添加了此注释…”一个是有说服力的方法,另一个是收集方法--
Model::get()->take(20);   // Correct
Model::get()->limit(20);  // Incorrect

Model::take(20)->get()    // Correct
Model::limit(20)->get()   // Correct
Model::offset(10)->limit(10)->get()