Validando exclusividade em múltiplas colunas no Laravel
Ao validar dados no Laravel, é essencial garantir a exclusividade em múltiplas colunas para evitar entradas duplicadas. Isso é particularmente relevante em cenários em que múltiplas combinações de valores devem ser exclusivas, como no caso mencionado, em que as colunas de IP e de nome de host precisam ser consideradas quanto à exclusividade.
Validação exclusiva em múltiplas colunas
Para validar a exclusividade em múltiplas colunas, o Laravel fornece a regra Rule::unique. Esta regra permite que você especifique a tabela e as colunas a serem consideradas durante a validação.
Regra de validação personalizada
No cenário determinado, o objetivo é validar o campo ip considerando colunas ip e hostname. Para conseguir isso, você pode usar uma regra personalizada como a seguinte:
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...
}
Explicação
Conclusão
Ao utilizar a regra Rule::unique com condições where personalizadas, você pode efetivamente garantir a exclusividade em múltiplas colunas no Laravel. Esta abordagem permite uma validação de dados mais específica e flexível, especialmente quando se consideram cenários como o mencionado na consulta inicial.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3