Magento 为什么save方法在for循环中只执行一次?
脚本应该在数据库中创建3个条目,但我只得到最后一个条目 在我看来,save()方法只执行一次,但它不应该像在for循环中一样运行3次吗Magento 为什么save方法在for循环中只执行一次?,magento,Magento,脚本应该在数据库中创建3个条目,但我只得到最后一个条目 在我看来,save()方法只执行一次,但它不应该像在for循环中一样运行3次吗 public function saveAction() { $vars = $this->getRequest()->getPost(); var_dump($vars); $model = mage::getModel('cevent/cevent'); for($i=0;$i&l
public function saveAction()
{
$vars = $this->getRequest()->getPost();
var_dump($vars);
$model = mage::getModel('cevent/cevent');
for($i=0;$i<=2;$i++){
$data = array(
'master_customer_id' => $vars['master_customer_id'][$i],
'customer_id' => 'null',
'email' => $vars['email'][$i],
'firstname' => $vars['firstname'][$i],
'surname' => $vars['surname'][$i],
'address' => $vars['address'][$i],
'city' => $vars['city'][$i]
);
$model->addData($data);
$model->save();
}
}
只显示一个条目的数据库
请提出一些建议,或者如果有其他方法。谢谢您的第一个循环创建了一个对象,接下来的所有循环都在更新同一个对象 必须在每个循环中重置对象,才能创建新循环
使用
object->addData()
,而不是使用object->setData()
,它将用新数据替换所有数据(并且在后台删除存储在对象数据中的上一次保存的主键)。Magento的ORM使用save()
进行创建和更新操作。主键的存在是资源模型层用来确定是执行插入还是更新的。在第一次迭代期间保存对象数据时,会插入该数据,但随后会在$model
引用的实例上设置autoincrement主键,之后只会获得更新。您可以在for
循环中取消设置数据或重新实例化类,并完成多个插入。是否缺少“for”结束}?抱歉,刚刚编辑了。它已经在那里了。
array
'master_customer_id' =>
array
0 => string '1' (length=1)
1 => string '1' (length=1)
2 => string '1' (length=1)
'firstname' =>
array
0 => string 'q' (length=1)
1 => string 'w' (length=1)
2 => string 'e' (length=1)
'surname' =>
array
0 => string 'q' (length=1)
1 => string 'w' (length=1)
2 => string 'e' (length=1)
'email' =>
array
0 => string 'q' (length=1)
1 => string 'w' (length=1)
2 => string 'e' (length=1)
'address' =>
array
0 => string 'Invercagille' (length=12)
1 => string 'Invercagille' (length=12)
2 => string 'Invercagille' (length=12)
'city' =>
array
0 => string 'q' (length=1)
1 => string 'w' (length=1)
2 => string 'e' (length=1)