下面是我的查询,并且我添加了一些说明。
$recommendedByVideoId = RecommendedVideo::selectRaw('video_id,id')
->orderBy('played_count', 'desc')
->orderBy('updated_at', 'desc')
->get()
->skip(3)
->take(2)
->groupBy('video_id')
下面是我的查询结果:
[video_id_1] => [record1, record2, record3, record4, record5],
[video_id_2] => [record1, record2, record3, record4, record5],
[video_id_3] => [record1, record2, record3, record4, record5],
[video_id_4] => [record1, record2, record3, record4, record5],
[video_id_5] => [record1, record2, record3, record4, record5, record6, record7],
预期结果应该类似于:
[video_id_1] => [record4, record5],
[video_id_2] => [record4, record5],
[video_id_3] => [record4, record5],
[video_id_4] => [record4, record5],
[video_id_5] => [record4, record5],
请帮助我写出查询,该查询从内部集合而不是外部集合中跳过记录。
谢谢。
答案 0 :(得分:1)
此处已在statckoverflow skip frist row and take the rest
中回答因此,要使用此功能,必须将take
与skip
一起使用,因为使用偏移量时,您会给数字赋予正确的权限。
因此,首先获取count
数据库中有多少行。
$count = Model::count()
然后$skip = 3
找到您提供给limit
方法的take
$limit = $count - $skip
现在这是您的最终查询
Model::skip($skip)->take($limit)->get();
您也可以将其与groupBy一起使用
,如果您不想更改查询,则获取不带skip
或take
的所有数据
并使用收集方法except
$data = $dataFromDataBase->except([0,1,2]);
它将自动从您的数据中删除给定密钥