2010-01-08 6 views
1

J'ai créé une fonction qui a une boucle infinie et un délai à la fin pour m'assurer qu'elle n'exécutera qu'une seule fois par seconde.Enregistrer la boucle interne

Cette fonction est dans une classe shell et son but est de sauver/dossiers de mise à jour dans trois tableaux différents et j'Invoque depuis la ligne de la console en utilisant la commande « gâteau className »

Mon problème est:

J'arrête la boucle sur la console (Ctrl + C) et seul le dernier enregistrement est enregistré dans la base de données.

Je ne sais pas s'il y a des problèmes avec la transaction, j'ai essayé d'utiliser begin() avant de sauvegarder et de valider après, mais le problème subsistait.

Le code est quelque chose comme ceci:

$this->T1->begin(); 
$this->T2->begin(); 
$this->T3->begin(); 

if ($this->T1->save((array (
    'Field1' => $val1, 
    'Field2' => $val2, 
    'Field3' => $val3))) 
    && $this->T2->save(array (
     'Field1' => $val4, 
     'Field2' => $val5, 
     'Field3' => $val6))) 
    && $this->T3->saveField('Field1', $val7)) 
{ 
     $this->T1->commit(); 
     $this->T2->commit(); 
     $this->T3->commit(); 

     echo 'success message'; 
} 
+0

qui n'est pas une boucle, mais une déclaration multi-conditionnelle – mark

Répondre

3

Il pourrait être parce que l'identifiant est toujours présent dans chacun des modèles qui arrive souvent lors de l'enregistrement dans une boucle, car les données se fusionné.

Essayez de réinitialiser les modèles afin qu'ils ne se chargent pas dans les données précédentes.

$this->Sale->create(false); 
$this->Bidagent->create(false); 
$this->Licitation->create(false); 

A partir de l'extrait de code si je ne suis pas sûr de ce que T1, T2 et T3 sont ... si elles sont des modèles dont ils ont besoin alors même $this->Model->create(false);

Référence:

+0

oublié de modifier ... T1, T2 et T3 sont la vente BidAgent et Licitation .. Merci qui a fonctionné parfaitement ... Il ne fallait mettre que pour le modèle Licitation car c'était le seul à créer de nouvelles lignes, les autres ne faisaient que des mises à jour. Merci – Canastro

Questions connexes