Method Illuminate \ Database \ Eloquent \ Collection :: skip不存在-Laravel 5.8

问题描述 投票:0回答:2

我正在使用laravel 5.8

我有这个封闭的查询:

$ user = User :: get();

然后这不起作用:

$ user-> skip(20)-> take(10);

发生这种情况:

方法照亮\数据库\口才\集合::跳过不存在。

告诉我如何做到这一点而不会出错?

php laravel collections pagination skip
2个回答
1
投票

不确定您要实现的目标,但这应该可以工作

$users = User::skip(20)->take(10)->get();

这也有效

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

0
投票

Tl; dr对于5.8,解决方案是使用slice();,因此变为$user->slice(20)->take(10);

[如果您想知道$users = User::skip(20)->take(10)->get();为什么起作用,但是下面的代码不起作用。

$user = User::get();
$user->skip(20)->take(10);

这是因为,当您使用Eloquent查询数据库时,许多可链接方法(例如:whereskip和许多其他方法)将转换为查询生成器,但是当您调用get时,它将返回从数据库到本地内存的整个结果,因此从Illuminate\Database\Eloquent\Collection成为Illuminate\Support\Collection固有的内容。

对于5.8,Collection没有skip方法。这样您就会收到该错误。

它从6开始添加,所以您要获得想要的结果,请更新为6 +或使用slice()

© www.soinside.com 2019 - 2024. All rights reserved.