J'ai une situation où le champ de nom doit être unique mais la règle s'applique uniquement lorsque la valeur du groupe correspond au groupe précédemment ajouté dans la base de données. Il y a une entrée pour le groupe et d'autres entrées pour le nom qui peuvent être ajoutées dynamiquement par l'utilisateur mais pour simplifier, j'ai ajouté 2 entrées avec l'attribut name[] ci-dessous. Si la 1ère entrée de nom (la 2ème entrée de nom n'est pas utilisée) est envoyée à la validation, cela fonctionne, cependant lorsque les valeurs des deux entrées sont envoyées, la validation ne fonctionne pas. Comment puis-je résoudre ce problème. Merci d'avance.
$request->validate([
'group' => 'required',
'name' => [
'required', Rule::unique('group_tbl')->where(function ($query) use ($request){
$query->where('group', $request->get('group'));
})
]
]);
entrées de formulaire:
Par exemple, il y a un groupe "G" et un nom "A" ajouté dans une base de données. Maintenant, si le groupe "G" et le nom "A" sont soumis, il affiche une erreur de validation "Le nom est déjà pris". Cependant, si le groupe "G", le nom "A" et un autre nom "B" sont soumis, il n'y a pas d'erreur. Cela ne devrait pas être enregistré car le nom "A" sous le groupe "G" est déjà stocké dans la base de données.
base de données:
id
groupe
nom
1
G
A