我如何在Vinelab / Neoeloquent查询中使用skip / take:PHP

时间:2016-07-19 20:27:41

标签: offset skip take neoeloquent

我想限制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);

2 个答案:

答案 0 :(得分:1)

您提供的答案是,您将获取所有评论,因此大量的评论将成为性能的瓶颈,尤其是您不需要所有这些评论。你可以做的是分别使用方法limitoffset对查询使用takeskip,如下所示:

$comments = $artifact->comments()->take(10)->skip(5)->get()

答案 1 :(得分:0)

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

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

工作正常。另一个名为splice()的方法返回类似的值,但请考虑它将修改原始结果集。