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