2013-01-22 163 views
2

我有扩展模型类Mage_Core_Model_Abstract。我有一个资源,它扩展了Mage_Core_Model_Mysql4_Abstract。现在,我从控制器删除下面的代码:Magento模型删除功能

public function deleteAction() 
{ 
    $params = $this->getRequest()->getParams(); 
    $blogpost = $this->_createModel(); 
    $blogpost->setId($params['id']); 
    $blogpost->delete(); 
    echo 'Post with id ' . $params['id'] . ' is deleted'; 
} 

的问题是没有显示错误,当我提供不存在的 IDS。该怎么办 ?我是否必须加载该ID并检查它是否存在?或者我应该使用try/catch。我用尝试和捕捉,但没有给出任何结果。

回答

3

当然它不会抛出异常,DELETE说法得到没有错误,最终执行的,它只有0

不幸的是,行数被丢在这里受影响的行数(Mage_Core_Model_Resource_Db_Abstract):

/** 
* Delete the object 
* 
* @param Varien_Object $object 
* @return Mage_Core_Model_Resource_Db_Abstract 
*/ 
public function delete(Mage_Core_Model_Abstract $object) 
{ 
    $this->_beforeDelete($object); 
    $this->_getWriteAdapter()->delete(
     $this->getMainTable(), 
     $this->_getWriteAdapter()->quoteInto($this->getIdFieldName() . '=?', $object->getId()) 
    ); 
    $this->_afterDelete($object); 
    return $this; 
} 

因为_getWriteAdapter()->delete()返回值不被任何

看起来你的确有其删除之前加载你的模型,或至少检查我所用通过资源集合存在。