Bonjour,

Voila je rencontre un petit problème avec mon code. Je veux supprimer un utilisateur qui a une clé étrangère sans supprimer la clé étrangère est il possible? et sans softdelete?

5 réponses


AlexJM
Réponse acceptée

Bonjour,

Si tu as mis des contraintes dans mysql (je suppose que c'est ce que tu utilises), tu ne peux pas avoir une clé étrangère qui représente une rangée qui n'existe pas.

Tu as alors 2 choix :

Soit tu ne mets pas de contrainte, dans ce cas tu pourras avoir un numéro d'une rangée qui n'existe pas. Je déconseille cette solution.

Tu ALLOW NULL dans ton champs, et avant de supprimer tu mets à NULL la clé étrangère. Ou alors, lorsque tu crées ta contrainte, tu mets "ON DELETE SET NULL" et mysql se chargera pour toi de mettre à NULL ta clé étrangère.

Elensars
Auteur

D'accord je vais voir ce que je peux faire, sinon c'est normal que j'ai des problème de clé étrangère sur des ajout et update ?

Ca dépend quelle est l'erreur

Elensars
Auteur

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails

Elensars
Auteur

c'est bon résolue je sais pas pourquoi , j'ai déplacer l'orde de mon $fillable et ca a marché je pensais que l'ordre impactait pas..bizarre
merci en tout cas pour t'on aide ;)