私は合計数を数える必要があります。グループでデータベースから来るレコードの数。私は、デフォルトで各セットまたは何グループのカウントを必要としません。Laravel 5 - 結合とグループで合計レコードを数える方法
私が知っている1つの方法は、クエリでget()を使うことですが、データベースにたくさんのレコードがあるとクラッシュします。私のコメントから
$orders = Order::where('orders.store_id', $store->id);
$orders->join('order_product', 'orders.id', '=', 'order_product.order_id');
$orders->join('products', 'products.id', '=', 'order_product.product_id');
$orders->join('customers', 'order_product.order_id', '=', 'customers.order_id');
$orders->join('addresses', 'customers.id', '=', 'addresses.customer_id');
$orders->where('products.status', 1);
$orders->where('orders.is_deleted', '0');
if ($keyword) {
$orders->where(function ($query) use ($keyword, $searchKeyword){
$query->where('products.title', 'LIKE', $searchKeyword)
->orWhere('orders.order_name', 'LIKE', $searchKeyword);
if (strtolower($keyword) == 'enabled') {
$query->orWhere('orders.status', '=', 1);
}elseif (strtolower($keyword) == 'disabled') {
$query->orWhere('orders.status', '=', 0);
}
return $query;
});
}
$orders->groupby('orders.id');
// Total orders
$totalOrders = count($orders->get());
$orders->orderBy($orderBy, $orderDirection)->skip($startFrom)->take($itemsPerPage);
$orders = $orders->select([
'orders.id',
'orders.order_name',
'products.title',
'products.handle',
'products.id as product_id',
'orders.status'
])->get();
合計レコードを取得するために2つの別々のクエリを実行する必要があります –
'$ orders'をページ付けすると仮定します。 '$ order-> skip() - > take() - > get()'の代わりに '$ orders-> paginate($ itemsPerPage)'を試しましたか? 'paginate()'は既にコレクションを返します。 – Skysplit
はい、ページネーションが必要です。私はページングのためにjqueryのdataTableを使用しています。ページングで可能ですか? –