0

Tengo un Array Coleciones, dentro de este array tiene muchos objetos tipo JSON con n datos, lo que intento hacer es insertarle un nuevo campo con su nuevo valor.

Para un ejemplo... tengo un array algo asi...

[{"name"=>"Pepe"},
{"name"=>"Jane"},
{"name"=>"Max"},
{"name"=>"Mishelle"},
{"name"=>"Petter"},
{"name"=>"George"},
{"name"=>"Maria"}]

Y tiene que terminar algo asi...

[{"name"=>"Pepe",
"last_name","smith"},

{"name"=>"Jane",
"last_name","jhonson"},

{"name"=>"Max",
"last_name","valdez"},

{"name"=>"Mishelle",
"last_name","smith"},

{"name"=>"Petter",
"last_name","planck"},

{"name"=>"George",
"last_name","smith"},

{"name"=>"Maria",
"last_name","kennedy"}]

El array solo tiene objetos cuyo unico campo es nombre, y lo que quiero es que ese objeto adquiera un campo mas llamado apellido... (Ese es solo un ejemplo)

$data = DB::table('guia_sucursal')
->join('colecciones','colecciones.id','=','guia_sucursal.coleccion_id')
->join('sucursales','colecciones.sucursal_destino_id','=','sucursales.id')
->select('colecciones.id as id','colecciones.titulo as titulo','colecciones.image as url','colecciones.codigo_barra as code_bar','sucursales.nombre as sucursal_destino')
->groupBy('guia_sucursal.coleccion_id')
->distinct('guia_sucursal.coleccion_id')
->get();
$num = 1;
foreach ($data as $coleccion){
    
    array_push($coleccion, "sucursal"=>"SUCURSAL".$num);

    $num = $num +1;
}

Mi codigo en LARAVEL es este. Como dije, lo unico que requiero es poder añadir un nuevo campo a todos los objetos de mi array.

¿Alguna idea?

0

2 respuestas 2

1

Me siento tonto escribiendo esta respuesta, pero para que no le pase a otro...

La respuesta era tan sencilla como

$num = 1;

foreach ($data as $coleccion){
    
    $coleccion->MI_NUEVO_ITEM = "MI NUEVO VALOR ".$num; 

    $num = $num +1;
}

Al ser un objeto, solo necesitas decirle "$miobjeto->nuevoITEM" y pasarle un valor para ese nuevo item.

1
  • 1
    Tienes razon, no me habia dado cuenta. De todas formas, la variable era solo para el ejemplo, como para dar a entender que se agregarian valores distintos cada vez que el bucle se repita. Mi error. Lo siento. Ya lo corregi, pero lo importante era poder añadir un nuevo item al Objeto Commented el 18 oct. 2022 a las 21:21
1

Otra opcion podria ser usar el metodo put() disponible para colecciones

$num = 1;

foreach ($data as $coleccion){
  $coleccion->put('MI_NUEVO_ITEM', "MI NUEVO VALOR " . $num); 
  $num = $num +1;
}

Laravel Docs

¿No es la respuesta que buscas? Examina otras preguntas con la etiqueta o formula tu propia pregunta.