2009-12-22 5 views
0

j'ai problèmes pour mettre plusieurs enregistrements dans symfony ce qui se passe est la 2ème place aux derniers enregistrements que met à jour le premier enregistrementsymfony insérer plusieurs enregistrements

ex:

$n = new Object(); 

// start loop until i = 5 
$n->count = $i; 
$n->text = 'a'.$i; 
$n->save(); 
i++; 
//end loop 

après cette boucle Theres seulement 1 enregistrement ... nombre = 5, texte = a5;

Y at-il un moyen d'effacer $ n de sorte que lorsque j'insère un nouvel enregistrement, il ne mettra pas à jour le premier?

+0

quelques détails sur votre « objet » et votre modèle aiderais –

Répondre

3

Je pense que votre pseudocode a besoin de changer un peu - inclure la nouvelle définition dans la boucle:

// start loop until i = 5 
$n = new Object(); 
$n->count = $i; 
$n->text = 'a'.$i; 
$n->save(); 
i++; 
//end loop 

Il est plus logique de cette façon aussi - vous voulez faire 5 nouvelles lignes, afin de le faire vous avoir à créer un nouvel objet 5 fois.

0

Si vous souhaitez conserver la nouvelle opération en dehors de la boucle, unset ($ n-> id) fera l'affaire.

0

Vous modifiez le même objet interprété par symfony que la modification de la même ligne de base de données. Déplacez le code de création d'objet dans la boucle. Vous pourriez penser que vous optimisez pour les performances en créant l'objet une seule fois, mais en appelant save() sur un objet qui a déjà un attribut 'id', symfony va effectuer une mise à jour de base de données au lieu d'un insérer. Les insertions sont généralement des opérations à temps constant alors que la performance de vos mises à jour dépend de différents facteurs, y compris la façon dont vos indices sont configurés.

P.S Je suis NO expert db alors peut-être que je suis complètement :-)

Questions connexes