Как использовать groupBy () с присоединением laravel 5 - PullRequest
0 голосов
/ 26 мая 2020

У меня здесь небольшая проблема: я хочу получать заказы из моей таблицы заказов, группируя их по полю created_at и суммируя суммы для каждой даты. Сумма взята из другой таблицы (товаров) и называется ценой. В таблице заказов в качестве внешнего ключа указан product_id. Затем я сделал это

        $ord = DB::table('orders')
            ->join('products', 'orders.product_id', '=', 'products.id')
            ->select(DB::raw('DATE(orders.created_at) as created_at'),
                'products.price',
                //DB::raw('sum(products.price) as amount')
            )->orderBy('orders.created_at', 'desc')
            ->get();
        $ord->groupBy('created_at');
        return $ord;

Проблема здесь в том, что когда я раскомментирую //DB::raw('sum(products.price) as amount '), у меня появляется ошибка Синтаксис ошибка или нарушение прав доступа: 1140 В агрегированном запросе без GROUP BY выражение № 1 списка SELECT содержит неагрегированный столбец . Без него у меня будет такой результат

[{"created_at":"2020-05-26","price":"950"},{"created_at":"2020-05-18","price":"4000"},{"created_at":"2020-05-18","price":"4000"},{"created_at":"2020-05-12","price":"320"}]

Но отсюда две записи 18-го числа с 4000 должны агрегироваться до 8000 только для этой даты, вот как я этого хочу. Мы будем очень благодарны за любую полезную помощь по этому поводу

...