网址: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,
}
答案 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