"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment valider l'unicité de plusieurs colonnes dans Laravel ?

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

Publié le 2024-11-07
Parcourir:138

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 vous permet de spécifier la table et les colonnes à prendre en compte lors de la validation.

Règle de validation personnalisée

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

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

Explication

  • La règle ::unique règle spécifie la table des serveurs, qui contient les colonnes IP et Hostname.
  • Le où la fermeture au sein de 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3