Я пытаюсь удалить запись с помощью действия удаления, используя модель среды zend. Я все еще не могу понять, почему его не удалять, а $ model-> delete () всегда возвращает ноль. (0) это мой код удаления.
public function deleteAction() { if ($this->getRequest()->isGet()) { $id = $this->getRequest()->getParam('id'); if (!empty($id)) { $id = $this->getRequest()->getPost('id'); $post = new Application_Model_Post(); if ($post->delete($id)) { $this->_helper->flashMessenger->addMessage('Post deleted.'); } else { $this->_helper->flashMessenger->addMessage('Post note deleted.'); } $this->view->messages = $this->_helper->flashMessenger->getMessages(); } $this->_helper->redirector('index'); } }
Класс Application_Model_Post имеет метод, называемый, delete ()
public function delete($id) { return $this->getMapper()->delete($id); }
это относится к методу удаления в классе Application_Model_PostMapper
public function delete($id) { $this->getDbTable()->delete('id ='.(int) $id); } public function getDbTable() { if (null === $this->_dbTable) { $this->setDbTable('Application_Model_DbTable_Post'); } return $this->_dbTable; } class Application_Model_DbTable_Post extends Zend_Db_Table_Abstract { protected $_name = 'posts'; }
REF: http://framework.zend.com/apidoc/1.6/Zend_Db/Table/Zend_Db_Table_Abstract.html#delete
ОБНОВЛЕНИЕ 1
попробовал это решение и не смог его решить.
$where = $this->getDbTable()->getAdapter()->quoteInto('id = ?', (int)$id); $this->getDbTable()->delete( $where );
также это,
$this->getDbTable()->delete(array('id = ?' => (int) $id));
этот звонок
$a = $this->getDbTable()->delete('id ='.(int) $id);
должно быть так
$where = $this->getDbTable()->getAdapter()->quoteInto('id = ?', (int)$id); $this->getDbTable()->delete( $where );
Проблема заключалась в неправильном вводе для $ id .
$id = $this->getRequest()->getParam('id'); if (!empty($id)) { $id = $this->getRequest()->getPost('id'); }
Поскольку я отправляю запрос на получение, это терпит неудачу. $ id = $ this-> getRequest () -> getPost ('id')
getPost () должен быть getParam ()