2010-07-09 3 views
0

Lorsque j'essaie d'éditer une entrée ... sa création d'une entrée en double dans la base de données.Entrée en double lors de la tentative de modification d'un enregistrement

Je me suis assuré que j'ajoute un champ d'identification caché quand je vais au formulaire d'édition.

restaurant

RestaurantAttribute

RestaurantContact

ce sont les modèles que je utilise.

essayé reinitialize l'id

$ this-> Restaurant-> id id = $ this-> Restaurant->;

étrange ... dans la base de l'entrée supplémentaire n'est pas là ...

mais dans son gâteau displaying..tried pour effacer le cache .. se produit toujours

http://harshamv.com/files/screenshots/2010-07-07_1524.png

http://harshamv.com/files/screenshots/2010-07-07_1525.png

j'ai posté le code ici

http://forum.phpvideotutorials.com/showthread.php?p=81936

ici est l'action index http://bin.cakephp.org/view/660872993

ici est le modèle http://bin.cakephp.org/view/1228539627

http://harshamv.com/files/screenshots/2010-07-10_0937.png

Déclaration SQL http://pastebin.com/EmdXmNeH

restaurant Modèle http://pastebin.com/W1sLiL7W

+0

Vous pourriez envisager de publier votre action d'index (ou toute autre action montrant la sortie paginée que vous montrez). Si vos données sont telles que vous l'attendez, cela peut poser un problème dans votre requête d'action d'index. – mikegreenberg

+0

voici l'action d'index http://bin.cakephp.org/view/660872993 –

Répondre

1

J'ai reçu la réponse de teknoid du MIRC.

Dans ma vue d'édition, je n'ai défini que Restaurant.id. Aucun des ID des modèles associés n'est défini dans la vue.

Par convention de gâteau nous devons avoir l'id de n'importe quel enregistrement de la mise à jour de DB. donc cela créait un enregistrement en double dans les modèles liés.

Dans l'action d'index, car il existe un JOIN de modèles liés. il créait des entrées en double en raison des entrées répétées dans le modèle associé

en ajoutant les identifiants de tous les enregistrements de modèle associés. Cela a résolu le problème.

Merci à tous pour votre temps. Finalement, j'ai réussi à le faire fonctionner.

1

S'il n'y a qu'un seul enregistrement montrant dans phpmyadmin et plusieurs expositions dans l'application alors vous avez un problème avec vos relations.

Je voudrais commencer par supprimer hasOne et appartientTo et voir. J'ai déjà eu ça, et c'était toujours une mauvaise relation.

+0

vous supprimez la relation tous ensemble du modèle à vérifier? ici est le modèle http://bin.cakephp.org/view/1228539627 –

+0

ne sais pas ce que vous demandez ou dire qu'il – dogmatic69

0

Vérifiez si la colonne ID est définie comme clé primaire et AUTOINCREMENT. Les entrées dupliquées ne peuvent pas être insérées si elles sont définies.

Ce

$this->Restaurant->id = $this->Restaurant->id; 

faire remarquer.

Edit:

Ok, ma faute que je ne l'ai pas vu que vous avez dit que dans les entrées DB sont ok. Puis:

  1. Vérifiez si $ this-> paginate() renvoie ces entrées dupliquées - print_r(). Si les entrées sont dupliquées ici, alors vous êtes en train de déconner les relations dans les modèles. Changez également l'option de débogage à 2 et voyez ce que les SQLs sont générés.

  2. Si les entrées sont uniques dans le contrôle ci-dessus, alors vous salissez quelque chose dans la boucle lors de l'affichage des résultats de $ restaurants

Je pense qu'il est plus probable que la première suggestion

+0

http://harshamv.com/files/screenshots/2010-07-10_0937. .png son été mis –

+0

Vérifiez ma réponse modifiée –

+0

deviner ur droit .. sql statment sa production est le coupable, ... mais toujours pas en mesure de faire l'erreur .. Déclaration SQL http: // pastebin .com/EmdXmNeH Restaurant Modèle http://pastebin.com/W1sLiL7W –

Questions connexes