Dans Laravel, la règle de validation unique garantit l'unicité d'une valeur dans une colonne de base de données spécifiée. Cependant, lorsqu'il s'agit de plusieurs colonnes, il n'est pas simple de valider leur unicité combinée.
Considérant la question, nous avons deux colonnes, ip et hostname, dans la table des serveurs. Pour valider qu'un nouvel enregistrement avec une valeur IP spécifique n'existe pas déjà dans la table à côté d'une valeur de nom d'hôte existante, nous pouvons utiliser Rule::unique.
L'extrait de code suivant montre comment obtenir la validation souhaitée :
<code class="php">$messages = [ 'data.ip.unique' => 'Given ip and hostname are not unique', ]; Validator::make($data, [ 'data.ip' => [ 'required', Rule::unique('servers') ->where(function ($query) use ($ip, $hostname) { return $query->where('ip', $ip) ->where('hostname', $hostname); }), ], ], $messages);</code>
Cette règle de validation vérifie si un enregistrement avec la même combinaison IP et nom d'hôte existe déjà dans la table des serveurs. Si tel est le cas, il renvoie un message d'erreur selon le message personnalisé spécifié dans $messages. En définissant la fermeture Where, nous pouvons spécifier les conditions exactes d'unicité, garantissant que les valeurs IP et de nom d'hôte sont prises en compte.
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!