entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Tengo el siguiente JSON (Mostrare un dd de la variable $data_concepts):

array:3 [
  0 => {#2408
    +"total": "1300"
    +"concepto": "AHORRO SOLIDARIO 1 B"
    +"alias": "2AS"
    +"tipo": 2
    +"code": "2AS"
  }
  1 => {#2377
    +"total": "700"
    +"concepto": "AHORRO SOLIDARIO 1 M"
    +"alias": "2AS"
    +"tipo": 2
    +"code": "2AS.0"
  }
  2 => {#2391
    +"total": "9815.670000000002"
    +"concepto": "AHORRO SOLIDARIO 2 B"
    +"alias": "24S"
    +"tipo": 2
    +"code": "24S."
  }
]

Estoy intentando agrupar los datos por medio del alias es decir, si el campo alias es repetido, obtener otro JSON con un solo alias y la suma del campo total de todos ellos.

Es decir, algo como esto:

array:2 [
      0 => {#2408
        +"total": "2000"
        +"concepto": "AHORRO SOLIDARIO 1 B"
        +"alias": "2AS"
        +"tipo": 2
        +"code": "2AS"
      }
      1 => {#2391
        +"total": "9815.670000000002"
        +"concepto": "AHORRO SOLIDARIO 2 B"
        +"alias": "24S"
        +"tipo": 2
        +"code": "24S."
      }
    ]

Estoy intentando de esta manera:

$conceptss= [];
  foreach ($data_concepts as $clave => $conceptss) {
                if (!empty($conceptss->alias)) {
                    if(!empty($concepts)) {
                        if (in_array($conceptss->alias, $concepts[$clave])) {
                            continue;
                        } else {
                            array_push($concepts, $conceptss);
                            // dd($concepts);
                        }
                    } else {
                        array_push($concepts, $conceptss);
                    }
                }
            }

Pero esto arroja un error, ¿Alguna idea o consejo? Cualquier ayuda me sirve y se agradece mucho, gracias.

Los datos los obtengo desde una consulta a mi base de datos, la consulta es la siguiente:

  $data_concepts = DB::table('processed_payroll_concepts')
                ->select(DB::raw('sum(processed_payroll_concepts.amount) as Total, processed_payroll_concepts.name as Concepto,  processed_payroll_concepts.alias as Alias,  processed_payroll_concepts.cat_concept_type_id as Tipo,  processed_payroll_concepts.code as Code'))
                ->leftJoin('processed_payrolls', 'processed_payrolls.id', '=', 'processed_payroll_concepts.processed_payroll_id')
                ->where('processed_payrolls.payroll_id', $id)
                // ->whereNotNull('alias')
                ->groupBy('processed_payroll_concepts.name')
                ->groupBy('processed_payroll_concepts.alias')
                ->groupBy('processed_payroll_concepts.cat_concept_type_id')
                ->groupBy('processed_payroll_concepts.code')
                ->get();

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta