sumar registros funcion español contar consultas con anidadas php laravel eloquent relation

php - registros - laravel sum model



Laravel Eloquent Suma de la columna de relación (3)

He estado trabajando en una aplicación de carrito de compras y ahora he llegado al siguiente problema ...

Hay un usuario, un producto y un objeto de carrito.
- La tabla Cart solo contiene las siguientes columnas: "id", "user_id", "product_id" y timestamps.
- Los carros UserModel "hasMany" (porque un usuario puede almacenar varios productos).
- CartModel "pertenece a" un usuario y CartModel "tiene muchos" productos.

Ahora, para calcular el total de productos, puedo llamar: Auth::user()->cart()->count() .

Mi pregunta es: ¿cómo puedo obtener la SUMA () de los precios (una columna de producto) de los productos en el carro por este Usuario?
Me gustaría lograr esto con Eloquent y no mediante el uso de una consulta (principalmente porque creo que es mucho más limpio).


Intenté hacer algo similar, lo que me llevó mucho tiempo antes de poder descifrar la función collect (). Entonces puedes tener algo de esta manera:

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

Esto le dará la suma total de todos los artículos.


esta no es su respuesta, pero es para aquellos que vienen buscando una solución para otro problema. Quería obtener la suma de una columna de la tabla relacionada condicionalmente. En mi base de datos, Deals tiene muchas Actividades. Quería obtener la suma del "amount_total" de la tabla de actividades donde activities.deal_id = deal.id y activities.status = paid, así que hice esto.

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

vuelve

"paid_sum_count" => "320.00"

en el atributo de ofertas.

Esta es ahora la suma que quería obtener, no el conteo.


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

La documentación es un poco ligera para algunos de los métodos de Collection , pero todos los agregados del generador de consultas están aparentemente disponibles además de avg() que se puede encontrar en http://laravel.com/docs/queries#aggregates .