Что Laravel красноречивый сумма столбца отношения


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

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

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

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

3 65

3 ответа:

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

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

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

$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"

в атрибут сделок.

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

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

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

Это даст вам общую сумму всех элементов.