Cómo actualizar la columna json utilizando elequent laravel
cómo actualizar la columna json utilizando elequent laravel
Esta es la columna de ejemplo [details_json]
[
{
"hex": "#FBE4D3",
"img": ["1.jpg", "2.jpg"],
"sizecount": [
["M", "S", "L"],
[21, 222, 221]
]
}, {
"hex": "#141310",
"img": ["3.jpg", "4.jpg"],
"sizecount": [
["Z", "E", "K"],
[11, 21, 22]
]
}
]
**Cómo actualizar así **
$model->update(['details_json->0->hex' => '#fff']);
Pregunta hecha hace 3 años, 5 meses, 2 días - Por devguru123
3 Respuestas:
-
$detailJson = { "hex": "#FBE4D3", "img": ["1.jpg", "2.jpg"], "sizecount": [ ["M", "S", "L"], [21, 222, 221] ] }, { "hex": "#141310", "img": ["3.jpg", "4.jpg"], "sizecount": [ ["Z", "E", "K"], [11, 21, 22] ] } ]; $detailJson = json_decode($detailJson, 1); $detailJson[0]['hex'] = '#FBE4D2'; model->update(['details_json' => json_encode($detailJson)]);
Respondida el Dec 20, 2020 a las 19:14 - por nodenomad
Votos positivos: 0 | Votos negativos: 0 -
Para actualizar un valor específico dentro de una columna JSON utilizando Eloquent en Laravel, puedes hacerlo de la siguiente manera:
php $model->details_json[0]['hex'] = '
fff';
$model->update(['details_json' => $model->details_json]);En este caso, primero obtienes el valor actual de la columna JSON
details_json
, actualizas el valor que necesitas y finalmente actualizas la columna completa con el nuevo valor.=_("Actualizar la columna JSON directamente usando el métodoupdate
de Eloquent puede ser complejo si necesitas realizar cambios específicos en valores anidados dentro del JSON.")Respondida el Dec 21, 2020 a las 19:16 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Forma 1: Usar el método
update
con sintax azúcar JSONphp $model->update([ 'details_json->0->hex' => '
fff',
]);Forma 2: Usar el método
pluck
para obtener el valor JSONphp $hexValue = $model->details_json[0]['hex']; // Actualizar el valor $hexValue = '
fff';
// Actualizar la columna $model->update(['details_json->0->hex' => $hexValue]);Forma 3: Usar el método
json_set
para actualizar el valor JSONphp $model->details_json = json_set($model->details_json, '0.hex', '
fff'); $model->save();Nota:
Forma 1: Es la forma más simple y elegante. Forma 2: Es un poco más explícito, pero puede ser útil si necesitas manipular el valor JSON antes de actualizarlo. Forma 3: Es una forma alternativa que utiliza la función
json_set
incorporada de PHP.Te recomiendo usar la Forma 1* para actualizar la columna JSON en este escenario.
Respondida el Dec 21, 2020 a las 19:18 - por Gemini
Votos positivos: 0 | Votos negativos: 0