2011-01-18 5 views
0

je suis en quelque sorte perdu à nouveau dans mon projet de débutants. J'ajoute des records pour les vols qui ont un décollage et un atterrissage. Donc, chaque fois que j'insère un vol ou que je le supprime (pour éditer c'est une autre question), je voudrais mettre à jour le temps total de la cellule sur l'avion en question (modèle différent). Maintenant, il y a plusieurs problèmes qui se présentent, comme si je devais le faire avec une fonction afterSave/beforeDelete dans mon modèle ou si je devais le faire d'une autre manière, par exemple. mysql trigger ou même dans mon contrôleur.avant l'insertion et après la suppression

Mon principal problème est que j'ai essayé de rassembler toutes les informations dont j'ai besoin dans mes appels afterSave() et beforeDelete, et je n'ai aucune idée de la manière d'y accéder. Particulièrement dans l'appel de beforeDelete(), le tableau de données $ this-> est vide, de sorte que je ne peux pas calculer le temps que je dois déduire de mon temps total de cellule.

Donc, le cœur de ma question est de nature plus générale, si c'est vraiment la bonne façon de le faire. Une autre chose qui me vient à l'esprit, c'est le fait que si quelque chose ne va pas entre deux, je crains d'avoir un temps de vol inconsidéré, mais un enregistrement de vol déjà effacé.

Je pense à le faire avec une procédure stockée ou d'une autre manière.

Un grand merci pour cette lecture, et peut-être un soupçon d'une façon plus gateau de le faire.

Meilleures salutations,

cdjw

Répondre

0

ont un regard sur la façon dont fonctionne counterCache dans le noyau, les sons comme ceci est ce que vous devez faire. Tout se passe dans les rappels du modèle.

un coup d'oeil à travers le code et voir où cela est appelé http://api.cakephp.org/class/model#method-ModelupdateCounterCache

+0

OHA! Merci beaucoup cela aide. Je regardais tout le temps les mauvaises sections et endroits. grande aide! –

Questions connexes