Maison >développement back-end >tutoriel php >Comment valider l'unicité sur plusieurs colonnes dans Laravel ?

Comment valider l'unicité sur plusieurs colonnes dans Laravel ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 12:18:30879parcourir

How to Validate Uniqueness Across Multiple Columns in Laravel?

Validation de l'unicité sur plusieurs colonnes dans Laravel

Lors de la validation des données dans Laravel, il est essentiel de garantir l'unicité sur plusieurs colonnes pour éviter les entrées en double. Ceci est particulièrement pertinent dans les scénarios où plusieurs combinaisons de valeurs doivent être uniques, comme dans le cas mentionné où les colonnes IP et nom d'hôte doivent être prises en compte pour l'unicité.

Validation unique sur plusieurs colonnes

Pour valider l'unicité sur plusieurs colonnes, Laravel fournit la règle Rule::unique. Cette règle permet de préciser la table et les colonnes à prendre en compte lors de la validation.

Règle de validation personnalisée

Dans le scénario donné, le but est de valider le champ ip en considérant les colonnes IP et Nom d'hôte. Pour y parvenir, vous pouvez utiliser une règle personnalisée comme la suivante :

<code class="php">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...
}</code>

Explication

  • La règle ::unique règle précise la table des serveurs, qui contient les colonnes IP et Hostname.
  • La fermeture Where dans la règle définit les conditions qui doivent être remplies pour l'unicité. Dans ce cas, il vérifie si l'adresse IP et le nom d'hôte correspondent à des enregistrements existants dans la base de données.
  • Le message d'erreur personnalisé Étant donné que l'adresse IP et le nom d'hôte ne sont pas uniques est associé à la règle de validation data.ip.unique.

Conclusion

En utilisant la règle Rule::unique avec des conditions Where personnalisées, vous pouvez efficacement garantir l'unicité de plusieurs colonnes dans Laravel. Cette approche permet une validation des données plus spécifique et flexible, en particulier lorsque l'on considère des scénarios comme celui mentionné dans la requête initiale.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn