laravel

Laravel: guardar Model automáticamente desde formulario

Hoy vengo a mostrar un truco o atajo al programar en Laravel, se trata de guardar un modelo con los campos que tiene el formulario de manera automática, en lugar de especificar cada propiedad manualmente.

Es decir, a partir de los campos que tiene el formulario guardar el modelo en la base de datos en una sola línea.

Guardar modelo en una línea

Esto tiene su explicación; en primer lugar, al obtener el formulario en Laravel obtenemos un arreglo de datos, en donde tienen clave y valor; a través del método $request->input()

Al instanciar un modelo podemos pasar un arreglo con los datos que lo van a llenar. Ese arreglo puede ser el mismo que obtenemos desde $request->input()

Después de tener el modelo, invocamos a save, saveOrFail, etcétera.

Para evitar problemas de seguridad debemos tomar en cuenta que se debe definir la propiedad $fillable del modelo, para especificar cuáles campos pueden ser llenados desde una petición HTTP o en una asignación masiva.

El modelo

Tengo un modelo de un grupo; es concretamente un grupo escolar de la escuela; por el momento solo tiene la propiedad nombre, así que lo defino así:

See the gist on github.

Estoy especificando que lo único fillable es el nombre.

Formulario

El formulario tiene la ruta, el método, etcétera. Aquí a cada input le asigno, en name, el nombre de la propiedad del modelo, misma que está en la base de datos:

See the gist on github.

Después tengo la ruta que es llamada desde el formulario; misma que llama al controlador.

El controlador: donde sucede la magia

En donde se procesa el formulario simplemente creamos el modelo y lo guardamos, sin asignar cada propiedad.

See the gist on github.

La magia está en la línea 4.

La diferencia notable

Puede que por ahora no se note o que no lo hayas entendido. Supongamos que tenemos un modelo con múltiples propiedades; manualmente se vería así:

See the gist on github.

En cambio, con este truco, se vería así:

See the gist on github.

O en una sola línea como en el ejemplo mostrado anteriormente. Y no se afecta a la seguridad porque para eso existen los fillables.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

4 horas hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

20 horas hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

21 horas hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

2 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

1 semana hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

1 semana hace

Esta web usa cookies.