Como sumar todos los valores de una columna – Laravel

publicado por: Anonymous

Tengo dos tablas relacionadas llamadas Carteras y Solicitudes. En la tabla solicitudes tengo el campo amount que almacena un numero entero en la base de datos.

Una cartera puede tener varias solicitudes y en este caso la cartera San Jacinto tiene 2 solicitudes y la cartera San Martin tiene 3 solicitudes, por eso es que en la vista se aprecian que el mismo numero de datos(Q5000) en las celdas de la columna capital invertido

introducir la descripción de la imagen aquí

Como puedo obtener la suma de las cantidades que estan encerradas en el circulo celeste?

Este es mi controlador CarterasController:

public function index()
{
    $carteras = Cartera::orderBy('id', 'DESC')->get();
    return view('admin.carteras.index', compact('carteras'));
}

La vista:

<div class="bg-white mt-5 mb-5 table-responsive">
<table class="table text-center table-width">
    <thead>
        <th>Id</th>
        <th>Nombre</th>
        <th>Departamento</th>
        <th>Municipio</th>
        <th>Capital Invertido</th>
        <th>Capital+Interés</th>
        <th>Total Amortización</th>
    </thead>
    <tbody>
        @foreach ($carteras as $cartera)
        <tr>
            <td>{{$cartera->id}}</td>
            <td>{{$cartera->name}}</td>
            <td>{{$cartera->depto}}</td>
            <td>{{$cartera->municipio}}</td>
            <td>Q
                //=====Con esto he logrado tomar las cantidades que se muestran======
                @foreach ($cartera->solicitudes as $solicitud)
                    {{$solicitud->amount}}
                @endforeach
            </td>
            <td>Q0000.00</td>
            <td>Q0000.00</td>
        </tr>
        @endforeach
    </tbody>
</table>

La Relacion entre tablas en el modelo Cartera

 public function solicitudes() {
    return $this->hasMany('AppCredit');
}

Intenté hacerlo con la función sum() pero no se como utilizarlo porque no mostró lo que necesitaba(siempre en la vista lo hice):

 <td>Q
      @foreach ($cartera->solicitudes as $solicitud)
         {{$solicitud->sum('amount')}}
      @endforeach
 </td>

me mostraba esto:

introducir la descripción de la imagen aquí

sumaba todos los datos de la tabla y lo que necesito es por ejemplo Q10,000 y Q15,000 respectivamente.

O habrá otra forma de obtener esas cantidades desde el controlador y sumarlas? Estoy iniciando aprender laravel y necesito ayuda por favor :(…

solución

Podrías hacerlo de varias formas, quizá hasta con eloquent, pero para que sea entendida de mejor forma podrías crear una variable $suma e ir sumando tus valores en esa variable:

@php
    $suma=0;
@endphp
 <td>Q
      @foreach ($cartera->solicitudes as $solicitud)
        @php
          $suma+=$solicitud->amount;//sumanos los valores, ahora solo fata mostrar dicho valor
        @endphp             
      @endforeach
      {{$suma}}
 </td>

Eso debería de funcionarte.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *