0

脚本应该在数据库中创建 3 个条目,但我只得到一个,它是最后一个条目。

在我看来 save() 方法只执行一次,但它不应该像在 for 循环中一样运行 3 次吗?

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();        
  }
}

数据库表单中的已发布数据

    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)

数据库只显示一个条目

在此处输入图像描述

请提出一些建议,或者是否有其他方法。谢谢

4

2 回答 2

1

您的第一个循环创建了一个对象,接下来的所有循环都在更新同一个对象。

您必须在每个循环中重置对象才能创建新对象。

而不是使用object->addData(),使用object->setData()它将用新数据替换所有数据(并且在后台删除存储在对象数据中的先前保存的primary_key)。

于 2013-04-08T12:39:02.073 回答
1

Magento 的 ORMsave()用于创建和更新操作。主键的存在是资源模型层用来确定是执行插入还是更新。当您的对象数据在第一次迭代期间被保存时,它会被插入,但随后会在 引用的实例上设置自动增量主键$model,之后您只会获得更新。您可以取消设置数据或在循环中重新实例化类for并完成多次插入。

于 2013-04-08T12:40:13.550 回答