Php Laravel口若悬河的skip n,全部拿走?

Php Laravel口若悬河的skip n,全部拿走?,php,laravel,eloquent,offset,Php,Laravel,Eloquent,Offset,我注意到在Laravel中,当链接skip()时,还必须使用take()。我想跳过前n行,但要跳过其余的。take方法只允许整数,我如何做到这一点而不诉诸于一些黑客技巧,例如为take指定一个大数字?基本上,对于每个偏移量,必须提供一个限制,mysql才能工作。因此,如果不明确限制,就无法做到这一点。我们需要一些php魔咒在这里工作 假设我们有一个名为出勤率的雄辩课堂。以下是应该采取的措施: //Getting count $count = Attendance::count(); $skip

我注意到在Laravel中,当链接
skip()
时,还必须使用
take()
。我想跳过前n行,但要跳过其余的。take方法只允许整数,我如何做到这一点而不诉诸于一些黑客技巧,例如为take指定一个大数字?

基本上,对于每个偏移量,必须提供一个限制,mysql才能工作。因此,如果不明确限制,就无法做到这一点。我们需要一些php魔咒在这里工作

假设我们有一个名为
出勤率
的雄辩课堂。以下是应该采取的措施:

//Getting count
$count = Attendance::count();
$skip = 5;
$limit = $count - $skip; // the limit
$collection = Attendance::skip($skip)->take($limit)->get();

我认为这不是一个好的答案,因为您必须执行两个查询,正确的方法是:

$collection = Attendance::skip($skip)->take($limit)->get();
$collection.shift();

您可以查看有关集合的更多信息

如果您使用的是MySQL,并且不希望有两个查询来获取最大行数,您可以使用PHP最大INT值作为
take()
参数,例如
take(PHP\u INT\u max)

这是因为Laravel查询语法。所以你不能用比这个更大的数字

发件人:

要检索从某个偏移量到结果集末尾的所有行,可以对第二个参数使用一些较大的数字

例如:

\App\User::skip(10)->take(PHP_INT_MAX)->get();

我同意。有趣的阅读也不能理解为什么?不,首先定义$limit?基本上,首先调用count()将触发计数查询,这不是您想要的,您只需要获取一个数字并跳过第一个,这将转换为SQL以限制,