Actualizar datos de relaciones en modelos Eloquent

Laravel eloquent

En la documentación de Laravel Eloquent podemos encontrar como podemos guardar información dentro de una relación sin tener que actualizar la clave foránea de manera manual, pero como hacer para actualizarla sin tener que buscar el registro relacionado.

Insertando en Modelos Relacionados

Primero, vamos a explicar el ejemplo de como guardar un registro relacionado de un modelo, por si alguien quiere conocer como se hace (aunque se puede encontrar en la documentación): Tenemos un post (modelo Post) al cual queremos guardarle un comentario (modelo Comment). Si hicimos bien nuestras relaciones deberíamos haber declarado nuestra relación de Uno a Muchos (debido a que un Post puede tener varios comentarios) y dentro de la tabla comments tener un campo para la clave foránea llamado post_id.

Método Save

Para relacionar bastaría con actualizar el campo post_id en los comentarios, pero esto seria la forma “manual”, si queremos aprovechar lo que nos provee Eloquent usando las relaciones podemos ahorrarnos tiempo de la siguiente manera:

Si necesita guardar varios modelos relacionados, puede utilizar el método saveMany:

Metodo create

Para lograr esto también contamos con el método create, la diferencia entre create y save es que el ultimo acepta una instancia de modelo Eloquent mientras que create acepta un array simple:

Actualizando Registros

Ahora bien, ¿que pasa si no queremos crear un nuevos registro dentro de la relación de nuestro modelo, sino que queremos actualizarlos? Puedes utilizar las mismas relaciones para hacerlo como te muestro a continuación:

Esa puede ser una de las maneras en que puedes hacerlo directamente. ¿Para que lo necesitarías? Quizás para este ejemplo particular actualizar los mensajes de los comentarios no tiene mucho sentido que digamos. Pero hay otros casos de usos en el que si conviene saberlo. Funciona para cualquier tipo de relaciones.

Si quieres seguir conociendo mas sobre Eloquent recuerda ver estos temas:

Eloquent: Obtener resultado de un Modelo ignorando el Accessor

Eloquent: Macros en relaciones

8 métodos de Eloquent que debes de conocer

Comparte este artículo

Entra en la discusión y deja tu comentario

  • Juan Rincón

    Hola saludos, yo tengo comentarios pero no los actualizo de esa manera. Me dio la sensación de que serviría como para jquery

Veces