2013-04-08 262 views
0

腳本應該在數據庫中創建3個條目,但我只得到一個是最後一個條目。爲什麼save方法只在for循環中執行一次?

在我看來,save()方法只執行一次,但不是它假設運行3次以及它在for循環中嗎?

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) 

DB只顯示一個條目

enter image description here

請提出好的建議,或者如果周圍有任何其他方式。謝謝

+0

是不是'閉'}失蹤? – 2013-04-08 12:13:59

+0

對不起剛剛編輯。它已經在那裏了。 – RIK 2013-04-08 12:16:00

回答

1

Magento的ORM使用save()進行創建和更新操作。主鍵的存在是資源模型層用來確定是否執行插入或更新。當您的對象數據在第一次迭代期間被保存時,它將被插入,但是自動增量主鍵被設置在$model引用的實例上,之後您只會獲得更新。您可以取消設置數據或在for循環中重新實例化類,並完成多個插入。

1

您的第一個循環創建一個對象,並且下一個循環將更新這個相同的對象。

您必須重置每個循環中的對象才能創建一個新對象。

而不是使用object->addData(),使用object->setData()將使用新數據替換您的所有數據(並在後臺刪除存儲在您的對象數據中的先前保存的primary_key)。