如何在桌子(Laravel)中前进/后退10条记录?

时间:2017-07-20 16:00:50

标签: laravel eloquent

我遇到的问题是我的id不是顺序的。 id 95之后的含义可能是101然后是103然后是123等。 因此,如果我只是在id上加10,我会得到105.问题1 - >不存在与105的id。问题2 - >我只跳了3个ids。

可能的解决方案:

$currentUser = User::find(95);
$nextUserID = User::where('id', '>', $currentUser->id)->min('id');

并使用此循环10x查找下一个项目时间10?

有更好的方法吗?

3 个答案:

答案 0 :(得分:3)

如果您想从当前用户中跳过下10位用户,请使用skip()方法:

User::where('id', '>=', 95)->skip(10)->first();

答案 1 :(得分:0)

您可以使用skip()然后使用take(),然后使用get()first()来获取以下记录:

$nextUserID = User::where('id', '>', $currentUser->id)->skip(10)->first();

有了这个,您可以在10条记录后获得第一行。

您可以使用take()在划分10条记录后获取n条记录,如下所示:

$next_nrows = User::where('id', '>',$currentUser->id)->skip(10)->take(n)->get();

请参阅官方文档here

答案 2 :(得分:0)

如果你想要反向跳过10(比如回去10条记录),请使用以下内容:

User::where('id', '<=', 95)->orderBy('id', 'DESC')->skip(10)->first();