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();