Laravel 查询生成器 GROUP BY 方法以及 SKIP 和 TAKE 方法
Laravel query builder GROUP BY method alongside with SKIP and TAKE methods
我有大约 50000 条记录,我在服务器端处理的数据表中显示它们。
在我的查询中,我将 groupBy()
方法与 skip()
和 take()
方法一起应用。
我希望能够在groupBy()
之后应用限制,例如
如果限制是 10,它应该 return 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 个组。
尝试在查询的最后但在 get()
.
之前省略 take(10)
并添加 limit(10)
您的查询语句顺序错误。以下应该可以解决问题。请注意 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()
DB::table('actions')
->whereBetween('timestamp', array($dates['startDate'], $dates['endDate']))
->where('shop_name', $shopName)
->get()
->groupBy('product_id')
->splice($start,$rowperpage);
这个命令奏效了。
我有大约 50000 条记录,我在服务器端处理的数据表中显示它们。
在我的查询中,我将 groupBy()
方法与 skip()
和 take()
方法一起应用。
我希望能够在groupBy()
之后应用限制,例如
如果限制是 10,它应该 return 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 个组。
尝试在查询的最后但在 get()
.
take(10)
并添加 limit(10)
您的查询语句顺序错误。以下应该可以解决问题。请注意 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()
DB::table('actions')
->whereBetween('timestamp', array($dates['startDate'], $dates['endDate']))
->where('shop_name', $shopName)
->get()
->groupBy('product_id')
->splice($start,$rowperpage);
这个命令奏效了。