我大约有50000条记录,并通过服务器端处理在Datatable中显示它们。
在我的查询中,我将groupBy()
方法和skip()
和take()
方法一起应用。
我希望能够应用限制之后 groupBy()
,例如
如果限制为10,则应返回10组而不是10条记录。
DB::table('actions')->whereBetween('timestamp',
array($dates['startDate'], $dates['endDate']))
->where('shop_name', $shopName)
->skip($start)
->take(10)
->get()
->groupBy('product_id');
通过此查询,我得到10条记录而不是10组。
答案 0 :(得分:1)
您的查询语句顺序错误。以下应该可以解决问题。请注意,groupBy()
位于take()
和get()
之前。
在您的情况下,将在获取记录后进行分组。
DB::table('actions')
->whereBetween('timestamp', array($dates['startDate'], $dates['endDate']))
->where('shop_name', $shopName)
->groupBy('product_id')
->skip($start)
->take(10)
->get()
答案 1 :(得分:0)
尝试省略take(10)
并在查询的最后但在limit(10)
之前添加get()
。
答案 2 :(得分:0)
DB::table('actions')
->whereBetween('timestamp', array($dates['startDate'], $dates['endDate']))
->where('shop_name', $shopName)
->get()
->groupBy('product_id')
->splice($start,$rowperpage);
此命令有效。