php - 方法 Illuminate\Database\Eloquent\Collection::skip 不存在 - Laravel 5.8
问题描述
我正在使用 laravel 5.8
我有这个封闭的查询:
$user = 用户::get();
然后这不起作用:
$user->skip(20)->take(10);
发生这种情况:
方法 Illuminate\Database\Eloquent\Collection::skip 不存在。
告诉我我应该怎么做才能做到这一点而不会出错?
解决方案
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.8Collection
没有skip
办法。所以你得到那个错误。
它是从 6 开始添加的,所以你为了实现你想要的,要么更新到 6 + 要么使用slice()
.
推荐阅读
- html - 如何在css背景图像中放入一个div 2图像:url(.....)
- javascript - 使用谨慎的元素在 Javascript 中将树构建为矩阵
- mysql - mysqldump返回权限被拒绝的问题
- javascript - 确定本地日期时间是否在日期时间窗口内
- url - 自动将 URL 替换为标题 Google Docs
- algorithm - 使用给定规则将 x,y 从 1,1 更改为 p,q
- java - 如何使用 JSON-B 反序列化未知属性?
- paypal - 设置交易与设置授权
- office-ui-fabric - 将 FluentUI Stack 组件制成的拆分窗格中的宽度固定为 50/50
- wordpress - 显示特定类别标签中的帖子数量