Я работал над приложением для покупок, и теперь я пришел к следующей проблеме.
Существует объект «Пользователь», «Продукт» и «Корзина».
– Таблица Корзина содержит только следующие столбцы: «id», «user_id», «product_id» и временные метки.
– UserModel «hasMany» Carts (потому что пользователь может хранить несколько продуктов).
– CartModel «принадлежит» пользователям и CartModel «hasMany».
Теперь, чтобы вычислить общие продукты, которые я могу просто вызвать: Auth::user()->cart()->count()
.
Мой вопрос: как я могу получить SUM () цен (столбца продукта) продуктов в корзине этим пользователем?
Я хотел бы сделать это с помощью Eloquent, а не с помощью запроса (главным образом потому, что я считаю, что он намного чище).
Auth::user()->products->sum('price');
Документация немного облегчает некоторые из методов Collection
но все агрегаторы построителей запросов, по-видимому, доступны помимо avg()
которые можно найти по адресу http://laravel.com/docs/queries#aggregates .
Я попытался сделать что-то подобное, и это заняло у меня много времени, прежде чем я смог выяснить функцию collection (). Таким образом, вы можете иметь что-то таким образом:
collection($items)->sum('amount');
Это даст вам общую сумму всех предметов.
это не ваш ответ, но для тех, кто приходит сюда, искать решение для другой проблемы. Я хотел бы получить сумму столбца связанной таблицы условно. В моей базе данных «Сделки» имеет много видов деятельности. Я хотел получить сумму «amount_total» из таблицы «Действия», где 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"
в атрибуте Сделки.
Это теперь сумма, которую я хотел получить не по счету.