php - Laravel 5 - 如何计算连接和分组的总记录数

标签 php mysql laravel group-by

我需要统计总数。来自数据库的记录的分组依据。我不需要每组的计数或默认情况下的分组方式。

我知道的一种方法是在查询时使用 ->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/

相关文章:

php - 为什么我的 PDO 语句 -> 执行返回 false?

Ruby on Rails 中的 Mysql2 安装

mysql - 获取百分比和 group by 语句

mysql - 列计数与 MySQL 中第 1 行的值计数不匹配

laravel - 传递数据以从 Laravel 中的存储方法创建 View

php - 设置外键检查不起作用 Laravel 迁移

php - 简单文本无损压缩 PHP/JavaScript

php - 通过PHP向MySQL添加数据

postgresql - 使用 PostgreSQL 更新 Laravel 迁移中的枚举列

PHP 使用 session 登录