> Faqs > Regla de validación Laravel unique (unico base de datos) que excluya el registro actual en edición

Regla de validación Laravel unique (unico base de datos) que excluya el registro actual en edición

Quiero hacer la validación de un campo que me mandan por formulario en Laravel que es el CIF de una empresa. El campo se llama "vat_number". De modo que:

  1. En la inserción debo asegurarme que es único, no existe otro campo "vat_number"
  2. En la edición debo asegurarme que es único, pero excluyendo al registro actual que se está editando.

¿Qué reglas de validación en Laravel debo de utilizar en ambos casos? ¿Podría usar la misma regla de validación para poder reutilizar el código?

Respuestas

Para validar el campo "vat_number" en Laravel, puedes utilizar la regla de validación unique, que ya funciona con la base de datos. Solo tienes que decirle la tabla correspondiente. La forma de utilizar esta regla varía ligeramente dependiendo de si estás insertando un nuevo registro o editando uno existente.

Validación Durante la Inserción

Para asegurarte de que el "vat_number" es único durante la inserción, puedes utilizar la regla de validación unique de la siguiente manera:

'vat_number' => 'required|unique:customers'

Aquí, customers es el nombre de la tabla en la base de datos donde tienes los elementos que estás verficiando como únicos.

Validación Durante la Edición

Cuando estés editando un registro, necesitas asegurarte de que el "vat_number" sea único, pero excluyendo el registro actual. Para esto, puedes pasar un parámetro adicional a la regla unique que indica el ID del registro que se está editando. Pero como es el tercer parámetro, necesitas indicarle tb el campo, en este caso "vat_number"

'vat_number' => 'required|unique:tu_tabla,vat_number,' . $customer->id

En este caso, $customer->id es el ID del registro que estás editando, entiendo q es un cliente. Esto asegura que la validación de único pero haciendo que se ignore el registro actual que estás pasado como id.

Reutilización de Código para validaciones de inserción y edición

Si quieres reutilizar el código, puedes utilizar un operador condicional dentro de la regla de validación. Por ejemplo, puedes verificar si estás en modo de edición (es decir, si tienes un ID de registro) y modificar la regla de validación en consecuencia:

'vat_number' => 'required|unique:tu_tabla,vat_number' . ($customer->id ? ',' . $customer->id : '')

Aquí, si $customer->id existe (lo que significa que estás editando), se agregará a la regla de validación, excluyendo el registro actual de la comprobación. En caso de inserción (donde $customer->id no existiría), se aplicaría la regla estándar.

Julian
1100 46 84 45