我正在使用laravel 5.8
我有这个封闭的查询:
$ user = User :: get();
然后这不起作用:
$ user-> skip(20)-> take(10);
发生这种情况:
方法照亮\数据库\口才\集合::跳过不存在。
告诉我如何做到这一点而不会出错?
不确定您要实现的目标,但这应该可以工作
$users = User::skip(20)->take(10)->get();
这也有效
$users = DB::table('users')->skip(20)->take(10)->get();
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
查询数据库时,许多可链接方法(例如:where
,skip
和许多其他方法)将转换为查询生成器,但是当您调用get
时,它将返回从数据库到本地内存的整个结果,因此从Illuminate\Database\Eloquent\Collection
成为Illuminate\Support\Collection
固有的内容。
对于5.8,Collection
没有skip
方法。这样您就会收到该错误。
它从6开始添加,所以您要获得想要的结果,请更新为6 +或使用slice()
。