"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como validar a exclusividade em várias colunas no Laravel?

Como validar a exclusividade em várias colunas no Laravel?

Publicado em 2024-11-07
Navegar:982

How to Validate Uniqueness Across Multiple Columns in Laravel?

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

  • A regra::unique regra especifica a tabela de servidores, que contém as colunas ip e hostname.
  • O onde o fechamento dentro da regra define as condições que precisam ser atendidas para exclusividade. Nesse caso, ele verifica se o ip e o nome do host correspondem a algum registro existente no banco de dados.
  • A mensagem de erro personalizada Dado que o ip e o nome do host não são exclusivos está associada à regra de validação data.ip.unique.

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.

Tutorial mais recente Mais>

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