Laravel的skip()函数仅适用于第一个查询

时间:2017-07-20 20:25:14

标签: laravel eloquent

网址:www.example.com/1(其中1表格中的id = 1)

我有一个按钮,允许用户尽可能转到下一个或上一个记录。 (www.example.com/2):

$next = Video::where('id', '>', $id)->min('id');

现在,当我希望用户跳过我试过的10条记录时:

Video::where('id', '>=', $id)->skip(10)->first();

我确实得到了正确的记录(假设它从1跳到11)。但是,当我转到下一条记录(www.example.com/2)时,我会得到与skip()函数(11)完全相同的结果,甚至在记录3上它仍然没有更新?

我确实检查了进入skip()查询的$ id是否正在更改。为什么这个功能不能更新?

P.S .: 我的控制器:

public function show ($id){
$next = Video::where('id', '>', $id)->min('id');
$previous = Video::where('id', '<', $id)->max('id');
$skip = Video::where('id', '>=', $id)->skip(10)->first();

return view('page',[
'next' =>  $next,
'prev' => $prev,
'skip' => $skip,
}

1 个答案:

答案 0 :(得分:0)

first方法始终返回第一条记录,并且会尊重where子句并忽略skip方法。

提出的解决方案:

$collection = YourModel::where(SOMETHING HERE)->skip(10)->take(1)->get();

现在我们收藏了。我们可以通过不同的方式访问第一个元素:

$item = $collection[0]; // array-like syntax
$item = $collection->first(); // standard collection method