Подтвердить что ты не робот

Laravel Красноречивый Сумма столбца отношений

Я работаю над приложением для покупок, и теперь я пришел к следующей проблеме.

Есть объект User, Product и Cart.
 - Таблица Корзина содержит только следующие столбцы: "id", "user_id", "product_id" и временные метки.
 - UserModel "hasMany" Carts (потому что пользователь может хранить несколько продуктов).
 - CartModel "принадлежит" пользователям и CartModel "hasMany".

Теперь, чтобы вычислить общие продукты, я могу просто позвонить: Auth::user()->cart()->count().

Мой вопрос: как я могу получить SUM() цен (столбец продукта) продуктов в корзине этим пользователем?
Я хотел бы сделать это с помощью Eloquent, а не с помощью запроса (главным образом потому, что я считаю, что он намного чище).

4b9b3361

Ответ 1

Auth::user()->products->sum('price');

Документация немного облегчает некоторые из методов Collection, но все агрегаторы построителей запросов, по-видимому, доступны помимо avg(), которые можно найти в http://laravel.com/docs/queries#aggregates.

Ответ 2

Я пробовал делать что-то подобное, и это заняло у меня много времени, прежде чем я смог найти функцию collection(). Итак, вы можете иметь что-то таким образом:

collection($items)->sum('amount');

Это даст вам общую сумму всех предметов.

Ответ 3

это не ваш ответ, а для тех, кто пришел сюда, для поиска другой проблемы. Я хотел бы получить сумму столбца связанной таблицы условно. В моей базе данных сделок есть много видов деятельности Я хотел получить сумму "amount_total" из таблицы Activities, где activity.deal_id = deal.id и activities.status = paid поэтому я сделал это.

$query->withCount([
'activity AS paid_sum' => function ($query) {
            $query->select(DB::raw("SUM(amount_total) as paidsum"))->where('status', 'paid');
        }
    ]);

он возвращает

"paid_sum_count" => "320.00"

в атрибуте "Сделки".

Это теперь сумма, которую я хотел получить, а не счет.