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
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.
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