1

約 50000 のレコードがあり、サーバー側の処理で Datatable に表示しています。私のクエリでは、groupBy()メソッドとメソッドをskip()適用していますtake()

制限を適用 groupBy()できるようにしたい

limit が 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 個のレコードを取得しています。

4

3 に答える 3

0

クエリ ステートメントの順序が間違っています。以下はトリックを行う必要があります。がandの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()
于 2019-01-25T10:00:21.873 に答える