我需要统计总数。来自数据库的记录的分组依据。我不需要每组的计数或默认情况下的分组方式。
我知道的一种方法是在查询时使用 ->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();
最佳答案
从我的评论中复制:
我假设您想对 $orders
进行分页。
$orders->paginate($itemsPerPage)
给你完全一样的结果
$orders->skip($startFrom)->take($itemsPerPage)->get().
略有不同,因为 Model::get()
为您提供 Collection 实例,而 Model::paginate()
返回 LengthAwarePaginator .但是,您可以对两者进行迭代。
请看Pagination在 laravel 文档上。
关于php - Laravel 5 - 如何计算连接和分组的总记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39116243/