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, 4 meses, 26 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étodo update 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 JSON

    php
    $model->update([
        'details_json->0->hex' => '
    fff',
    ]);

    Forma 2: Usar el método pluck para obtener el valor JSON

    php
    $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 JSON

    php
    $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