En Laravel, a menudo necesitas garantizar que un campo sea único en tu base de datos. La regla unique hace esto muy sencillo cuando se trata de una sola columna, pero ¿qué pasa cuando quieres comprobar la combinación de dos o más columnas? Por ejemplo, que el title sea único dentro de una misma categoría (category_id).
Aquí te muestro cómo puedes configurar tu Request o tu validador de Laravel para manejar este escenario.
1. Validar Combinación de Columnas con Rule::unique()
La clase Illuminate\Validation\Rule te permite personalizar reglas de validación con fluidez. Para validar que la combinación de title y category_id sea única, haríamos algo así:
En este ejemplo:
Rule::unique('posts'): Indica que la validación de unicidad se aplicará sobre la tablaposts.->where(...): Añadimos condiciones adicionales para la validación, en este caso, que se combinetitlecon la mismacategory_id.request('category_id'): Obtenemos el valor enviado en el formulario para asegurar que la validación sea contextual al input actual.
Nota: Si deseas incluir más de dos columnas en la validación, simplemente puedes encadenar más
where(). Por ejemplo,->where('created_by', request('created_by')), etc.
2. Variantes y Mejoras
2.1. Validar otras Columnas Simultáneamente
Tal vez necesites validar que slug sea único por usuario. Simplemente reemplaza la lógica dentro del where():
2.2. Ignorar ID en la Actualización
Si ya existe un post con el mismo id, puede que quieras ignorarlo cuando hagas un update. Podrías usar:
De esta forma, la validación no fallará si el registro pertenece a la misma fila que estás actualizando.
2.3. Definir Mensajes Personalizados
Es posible que desees mensajes de validación más descriptivos. Usa custom messages en tu archivo lang o directamente en tu validador:
3. Ejemplo Completo en un Form Request
Para mantener el código más limpio, conviene usar Form Requests (clases dedicadas para validar). Por ejemplo, StorePostRequest:
Luego, en tu controlador, simplemente:
4. Conclusión
Usar Rule::unique() con la clausula ->where() te permite validar la unicidad de un campo respecto a varias columnas, garantizando integridad y evitando duplicados en ciertos contextos. Esto es muy útil en escenarios como:
Etiquetas o slugs por usuario.
Títulos únicos en determinadas categorías.
Códigos de producto por proveedor, etc.
¿Ya has implementado la validación de múltiples columnas en tu aplicación? ¡Comparte tu experiencia con tus colegas y no olvides explorar la Ruta de Aprendizaje Laravel 11!
Curso Laravel 12
Completo 2026
El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.
star Incluido en cualquier suscripción