Zend Framework DbTable insert()两次插入记录

时间:2011-12-19 12:29:30

标签: php zend-framework zend-db-table

我有一个控制器动作如下

 public function reportcommentAction() {
    $comment_id = $this->getRequest()->comment_id;

    $blockedCommentTable = new Application_Model_DbTable_BlockedComments();
    $blockedCommentTable->blockComment($comment_id, $this->user_id);

}

调用blockComment()dbTable模型,看起来像这样

class Application_Model_DbTable_BlockedComments extends Zend_Db_Table_Abstract {

protected $_name = 'blocked_comments';

public function blockComment($comment_id, $blocked_by) {

    if (!empty($comment_id) && !empty($blocked_by)) {
        $data = array(
            'comment_id' => $comment_id,
            'blocked_by' => $blocked_by
        );

        $this->insert($data);
        exit;
    } 

}

出于某种原因,我需要退出;在末尾。如果没有它,我会插入2条记录而不是预期的记录。

我在blocked_comments表中有3个字段,即id,comment_id和阻止。使用exit语句,我得到一个值为1,21,1的记录,如预期的那样。如果没有exit语句,我会因某种原因获得值为2,0,1的额外记录。

我有相同的代码(没有多余的退出)在我的代码的其他部分工作,我不知道这里发生了什么。

2 个答案:

答案 0 :(得分:2)

The second time round the Request_Uri reports /us/account/report-comment/default.appcache?v=1 

删除主HTML标记中的manifest属性(位于顶部)以删除第二个调用。 Zend的应用程序路由似乎正在开始,而不是提供静态文件。这可能是因为该文件不存在或可能存在于不同的路径上。

答案 1 :(得分:0)

我有类似的问题。 ->insert被调用两次的原因是:

public function saveAction()
{   ... 
    $result = $this->_bookModel->saveBook($data);
    if ($result) {
        $this->view->form = $form->reset();
        $this->_helper->viewRenderer('index');  
    }

我已经取代了

$this->_helper->viewRenderer('index');

return $this->_helper->redirector('index'); 

它完美无缺。