Actualización de columnas JSON en Laravel: una guía rápida

  • Publicado el 10 octubre, 2024
  • Palabras: 310

¿Alguna vez necesitaste actualizar solo una parte de una columna JSON en tu base de datos? Laravel facilita esta tarea con su sintaxis intuitiva. Veamos cómo puede modificar fácilmente los datos JSON en las consultas de su base de datos.

Actualización de columnas JSON en Laravel: una guía rápida

#Uso de la sintaxis JSON arrow 

 

Laravel utiliza la sintaxis -> para actualizar claves específicas en un objeto JSON. Es como decir: "Hola, base de datos, ve a esta columna JSON y cambia este valor en particular".

 

Uso básico

 

Veamos un ejemplo sencillo:

 

$affected = DB::table('users')
    ->where('id', 1)
    ->update(['options->enabled' => true]);

 

¿Qué está pasando aquí?

 

  • Estamos apuntando a la tabla 'usuarios'
  • Estamos buscando un usuario con id 1
  • Estamos actualizando la clave 'enabled' en la columna JSON 'options'
  • Estamos configurando su valor en true

 

#Soporte de bases de datos

 

Esta ingeniosa característica funciona en:

 

  • MariaDB 10.3+
  • MySQL 5.7+
  • PostgreSQL 9.5+


¡Asegúrate de que la versión de tu base de datos sea compatible con esto antes de comenzar a escribir!

 

#Ejemplo práctico: preferencias del usuario

 

Supongamos que tiene un sistema de preferencias de usuario en el que los usuarios pueden alternar entre distintas configuraciones. A continuación, le indicamos cómo actualizar una preferencia específica:

 

use IlluminateSupportFacadesDB;

class UserPreferencesController extends Controller
{
    public function toggleNotifications($userId, $notificationType, $enabled)
    {
        $affected = DB::table('users')
            ->where('id', $userId)
            ->update(["preferences->notifications->$notificationType" => $enabled]);

        return $affected ? 'Preference updated' : 'Update failed';
    }
}

 

En este ejemplo:

 

  • Estamos actualizando una estructura JSON anidada (preferences-> notifications-> tipo específico)
  • Estamos alternando un valor booleano para un tipo de notificación específico
  • Estamos devolviendo un mensaje en función de si la actualización fue llevada a cabo con éxito


Este enfoque le permite manejar preferencias de usuario complejas sin necesidad de tablas separadas para cada configuración.

 

Con la función de actualización de columnas JSON de Laravel, puede administrar fácilmente estructuras de datos complejas en su base de datos. Es perfecto para configuraciones de usuario, opciones de configuración o cualquier escenario en el que necesite un almacenamiento de datos flexible y sin esquema.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión