"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo validar la unicidad en varias columnas en Laravel?

¿Cómo validar la unicidad en varias columnas en Laravel?

Publicado el 2024-11-07
Navegar:464

How to Validate Uniqueness Across Multiple Columns in Laravel?

Validación de la unicidad en varias columnas en Laravel

Al validar datos en Laravel, es esencial garantizar la unicidad en varias columnas para evitar entradas duplicadas. Esto es particularmente relevante en escenarios donde múltiples combinaciones de valores deben ser únicas, como en el caso mencionado donde se deben considerar las columnas de IP y nombre de host para su unicidad.

Validación única en múltiples columnas

Para validar la unicidad en múltiples columnas, Laravel proporciona la regla Rule::unique. Esta regla le permite especificar la tabla y las columnas a considerar durante la validación.

Regla de validación personalizada

En el escenario dado, el objetivo es validar el campo ip considerando columnas ip y nombre de host. Para lograr esto, puede usar una regla personalizada como la siguiente:

use Illuminate\Validation\Rule;

$data = [
    'ip' => '192.168.0.1',
    'hostname' => 'server-1',
];

$messages = [
    'data.ip.unique' => 'Given ip and hostname are not unique',
];

Validator::make($data, [
    'ip' => [
        'required',
        Rule::unique('servers')
            ->where(function ($query) use ($ip, $hostname) {
                return $query->where('ip', $ip)->where('hostname', $hostname);
            }),
    ],
], $messages);

if ($validator->fails()) {
    // Handle validation errors...
}

Explicación

  • La regla::regla única especifica la tabla de servidores, que contiene las columnas IP y nombre de host.
  • El dónde El cierre dentro de la regla define las condiciones que deben cumplirse para la unicidad. En este caso, verifica si tanto la IP como el nombre de host coinciden con algún registro existente en la base de datos.
  • El mensaje de error personalizado La IP y el nombre de host no son únicos está asociado con la regla de validación data.ip.unique.

Conclusión

Al utilizar la regla::regla única con condiciones donde personalizadas, puede garantizar de manera efectiva la unicidad en múltiples columnas en Laravel. Este enfoque permite una validación de datos más específica y flexible, particularmente cuando se consideran escenarios como el mencionado en la consulta inicial.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3