symfony插入多个记录

时间:2009-12-22 15:30:19

标签: insert symfony1 loops

我在symfony中插入多个记录时遇到问题所发生的事情是第二个到最后一个记录只更新第一个记录

例如:

$n = new Object();

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

在此循环之后,只有1个记录... count = 5,text = a5;

有没有办法清除$ n,这样当我再次插入新记录时,它不会更新第一个?

3 个答案:

答案 0 :(得分:4)

我认为您的伪代码需要改变一点 - 在循环中包含新定义:

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

这种方式也更有意义 - 你想要制作5个新行,所以要做到这一点你必须创建一个新对象5次。

答案 1 :(得分:0)

如果你想在循环外维持新操作,unset($ n-> id)就可以了。

答案 2 :(得分:0)

您正在修改symfony解释为修改同一数据库行的同一对象。将对象创建代码移动到循环中。

您可能认为通过仅创建一次对象来优化性能,但通过对已具有“id”属性的对象调用save(),symfony将执行数据库更新而不是插入。插入通常是恒定时间操作,而更新的性能取决于不同因素,包括如何设置索引。

P.S我 NO db专家,所以也许我完全不在了: - )