Contenido del curso
Fundamentos de Laravel
- 3

Qué es Artisan y cómo automatiza Laravel
04:23 min - 4

Rutas básicas en Laravel con web.php
06:44 min - 5

Cómo retornar vistas Blade en Laravel
07:02 min - 6

Plantillas Blade para vistas sin código repetido
06:03 min - 7

Controladores en Laravel con Artisan
07:17 min - 8

Migraciones en Laravel como control de versiones
07:01 min - 9

Modelos y factories en Laravel con datos falsos
06:56 min - 10

Consultas a base de datos con Eloquent
08:26 min - 11

Relaciones entre tablas con belongsTo en Laravel
05:37 min
Manos a la obra con nuestro proyecto
- 12

Revisión de arquitectura MVC en Laravel
02:15 min - 13

Instala el login de Laravel con Breeze
05:41 min - 14

Rutas de login y logout en Laravel Breeze
04:22 min - 15

Rutas y vistas con Route::resource en Laravel
03:59 min - 16

Listado de posts con paginación en Laravel
04:36 min - 17

Formulario para eliminar registros en Laravel
04:53 min - 18

Vistas de creación y edición con formulario compartido
06:49 min - 19

Formulario CRUD reutilizable en Laravel
05:02 min - 20

Guardar registros con relaciones en Laravel
06:06 min - 21

Método update en Laravel sin reescribir código
01:44 min - 22

Validación de formularios en Laravel con old()
04:43 min - 23

Validación unique en Laravel sin duplicados
Viendo ahora
Trabajemos en el diseño web de nuestro proyecto
- 24

Diseño del header con Tailwind y Laravel
06:38 min - 25

Divisor con gradiente en Tailwind CSS
03:50 min - 26

Construye la vista home de tu blog en Laravel
06:36 min - 27

Sección destacada con posicionamiento absoluto en Tailwind
04:15 min - 28

Diseño de página de publicación con Tailwind
02:33 min - 29

Formulario de búsqueda con Laravel y LIKE
04:18 min - 30

Cómo detectar el problema N+1 en Laravel
06:12 min
Cierre
Validación unique en Laravel sin duplicados
Resumen
Cuando trabajas con formularios en Laravel, uno de los retos más comunes es evitar registros duplicados sin romper la edición de datos existentes. Aquí aprenderás a configurar la regla unique en el controlador para validar URLs amigables al crear y editar publicaciones, ignorando el propio registro durante la actualización.
¿Cómo configurar la validación unique en el controlador?
La validación de campos únicos parte del bloque de reglas dentro del controlador. La idea es decirle a Laravel que revise la tabla post y confirme que el valor del campo URL amigable no se repita.
Para lograrlo, copias el bloque de validación existente y agregas el campo correspondiente con la regla unique:post. Esto obliga a que cada nuevo registro tenga una URL distinta a las ya guardadas [01:30].
¿Qué hace la regla unique en Laravel? Verifica que el valor enviado en el formulario no exista previamente en la columna indicada de una tabla. Si ya existe, devuelve un error de validación.
Después de guardar la configuración, también debes replicar el campo en el formulario y marcar las opciones necesarias para que la regla se aplique al envío.
¿Por qué falla la validación unique al editar un registro?
Aquí aparece el detalle interesante. Cuando editas un registro sin cambiar la URL amigable, Laravel detecta que ese valor ya existe en la base de datos y lanza el error de duplicado, aunque seas tú mismo el dueño del registro [02:45].
Es decir, la regla compara contra todos los registros de la tabla, incluido el que estás editando. Por eso necesitas una instrucción adicional que le indique a Laravel: revisa el resto de registros, pero ignora este en particular.
¿Cómo ignorar el registro actual durante la actualización?
La solución es pasar el ID del registro como segundo parámetro de la regla unique. Quedaría algo así:
php 'url_amigable' => 'required|unique:post,url_amigable,'.$id
Con esa coma seguida del ID, le dices a Laravel que excluya ese registro de la comparación. El resto de la tabla sigue siendo evaluado normalmente, así que la protección contra duplicados se mantiene intacta.
¿Cuándo debo usar el ID en la regla unique? Solo en el método de actualización (
update). En la creación no existe un ID previo que ignorar, así que la regla básicaunique:tabla,campoes suficiente.
¿Cómo probar que la validación funciona en crear y editar?
Para verificar que todo opera como esperas, conviene hacer un recorrido completo por ambos flujos. La prueba consiste en crear registros, editarlos y forzar duplicados intencionales.
- Crea un registro con título
nuevoy envía el formulario. Debe guardarse sin errores. - Crea un segundo registro con título
otro. También se guarda correctamente. - Edita el registro
otrosin cambiar la URL. Laravel debe permitir la edición sin marcar duplicado [04:30]. - Edita el mismo registro y cambia su URL a
nuevo. Aquí sí debe aparecer el mensaje de que el registro ya existe.
Este flujo confirma que la validación distingue entre comparar contra otros registros y comparar contra sí mismo, que es justo el comportamiento esperado en cualquier CRUD profesional.
¿Qué cambios pequeños generan grandes resultados?
Lo curioso es que toda esta lógica se resuelve con una modificación mínima: agregar el ID al final de la regla unique. No necesitas paquetes externos ni lógica compleja en el modelo.
Esta práctica se aplica en cualquier campo donde la unicidad importe: correos electrónicos, slugs, nombres de usuario o cualquier identificador público. La regla unique con exclusión de ID es una herramienta clave en el flujo de validación de Laravel.
Con estos ajustes, las funciones administrativas sobre la tabla de publicaciones quedan completas. El siguiente paso será diseñar el área pública, esa que verán los usuarios y clientes finales. ¿Ya implementaste esta validación en algún proyecto? Cuéntame en los comentarios cómo te fue.