2012-05-16 70 views
-1

應用程序中的其他模塊正在更新,除此之外。爲什麼Zend DB Update不能發佈?

在這裏,我使用的模型映射器在嘗試更新的行集,如http://framework.zend.com/manual/en/learning.quickstart.create-model.html

public function SomeAction() 
{ 
    $mapper = new Application_Model_SomeMapper(); 
    $model = new Application_Model_SomeModel(); //getters and setters 

    // action body 
    $request = $this->getRequest(); 
    $data = $this->_request->getParams(); 
    $someId = $data['someid']; 

    $get = $mapper->find($someId, new Application_Model_SomeModel, true); //find the row by id, and return array 

/* 
instantiating a form object and adding "submit" 
*/ 
    $form = new Module_Form_FormName(); 
    $form->setAction("/module/controller/action/params/$someId"); 
    $form->setMethod('post'); 
    $form->setName('some_edit'); 

    $submit = $form->createElement('button', 'submit'); 
    $submit->setAttrib('ignore',true); 
    $submit->setLabel('Edit Something'); 
    $form->addElement($submit); 


if ($this->_request->isPost()) 
    { 
     if($form->isValid($request->getPost())) 
     { 
      $data = $this->_request->getPost(); 

      if(empty($data['some_id' ])) 
      { 
       $data['tier_models_id'] = NULL; 
      } 

      unset($data['submit']); 

      $setters = $model->setId($data['id']) 
          ->setField1($data['field_1']); 

      if ($mapper->save($someId, $setters)) 
      { 
       $this->_redirect("/index/");     
      } 
     }  
    } 


    $form->populate($tier); 
    $this->view->form = $get; 

} 

發現這裏是保存映射函數的例子,但我已經包括了一個額外的$ id參數

public function save(Application_Model_Guestbook $guestbook) 
{ 
    $data = array(
     'email' => $guestbook->getEmail(), 
     'comment' => $guestbook->getComment(), 
     'created' => date('Y-m-d H:i:s'), 
    ); 

    if (null === ($id = $guestbook->getId())) { 
     unset($data['id']); 
     $this->getDbTable()->insert($data); 
    } else { 
     $this->getDbTable()->update($data, array('id = ?' => $id)); //not happening, although the 'id' is passed as a param 
    } 
} 

有什麼遺漏嗎?

回答

0

試試這個

$where = $this->getDbTable()->getAdapter()->quoteInto('id = ?', $id); 
$this->getDbTable()->update($data, $where); 
+0

輸入類型爲「按鈕」,並需要「提交」。 – parseMaestro63

相關問題