1

我想限制 Neoeloquent 查询给出的结果数量,take() 工作正常,但我不知道应该如何使用 skip()?我阅读了laravel 5.2 Do c。我正在尝试使用 skip(10)->take(10) 但它显示“方法跳过不存在”。这是我的代码:

$artifact=Models\Artifact::where('aid',$request->aid)->first();
$comments=$artifact->comments->take(10);
4

2 回答 2

1

根据您提供的答案,您将获取所有评论,因此大量评论将成为性能瓶颈,尤其是您不需要所有评论。你可以做的是在查询上使用limit和分别使用 和 方法,如下所示:offsettakeskip

$comments = $artifact->comments()->take(10)->skip(5)->get()
于 2016-07-20T13:51:14.497 回答
0

好的,我找到了我自己问题的答案,因为 $artifact->comments 的结果集是一个 laravel集合,所以没有 skip() 方法。使用另一种名为slice()的方法,我可以解决问题并获得我想要的结果子集。我现在有:

$comments=$artifact->comments->slice($startOffset, $count);

效果很好。另一个名为 splice() 的方法返回相似的值,但请注意它会修改原始结果集。

于 2016-07-20T03:56:20.900 回答