我有一个数据库,我想跳过/偏移前3行。
$data = Data::orderBy('created_at','desc')->skip(3)->paginate(1);
$data = Data::orderBy('created_at','desc')->offset(3)->paginate(1);
两个查询都从开始返回所有结果。谁能帮我这个?
谢谢。
skip
似乎不适用于paginate
。你可以做的是使用whereNotIn
排除行。
$data = Data::orderBy('created_at','desc')->whereNotIn('id', [1,2,3])->paginate(1);
如果你不知道id
,你可以查询并使用结果。
$id = Data::orderBy('created_at','desc')->take(3)->pluck('id');
$data = Data::orderBy('created_at','desc')->whereNotIn('id', $id)->paginate(1);
你不能一起使用paginate()
和skip()
。你能做的是:
$data = Data::orderBy('created_at','desc')->skip(3)->take(10)->get();
并根据您的自定义实现更新这些值跳过并获取值。
如果你真的想跳过前3行并且永远不会在分页中使用它们,你可以这样做:
$dataToEliminate = Data::orderBy('created_at','desc')->take(3)->select('id')->pluck('id');
$data = Data::whereNotIn('id', $dataToEliminate)->orderBy('created_at','desc')->skip(3)->paginate(1);
请参阅documentation以供参考。