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
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!