4

我正在尝试将数据写入数据库中的表。我终于建立了我的模型,但我无法向它写入数据。

我不断收到此错误:

Invalid method Turnkeye_Adminform_Model_Mysql4_Iaso::beginTransaction(Array
(
)
)

Trace:
#0 E:\projects\magento\app\code\core\Mage\Core\Model\Abstract.php(313): Varien_Object->__call('beginTransactio...', Array)
#1 E:\projects\magento\app\code\core\Mage\Core\Model\Abstract.php(313): Turnkeye_Adminform_Model_Mysql4_Iaso->beginTransaction()
#2 E:\projects\magento\app\code\community\Turnkeye\Adminform\controllers\Adminhtml\AdminformController.php(47): Mage_Core_Model_Abstract->save()
#3 E:\projects\magento\app\code\core\Mage\Core\Controller\Varien\Action.php(420): Turnkeye_Adminform_Adminhtml_AdminformController->saveAction()
#4 E:\projects\magento\app\code\core\Mage\Core\Controller\Varien\Router\Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('save')
#5 E:\projects\magento\app\code\core\Mage\Core\Controller\Varien\Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#6 E:\projects\magento\app\code\core\Mage\Core\Model\App.php(347): Mage_Core_Controller_Varien_Front->dispatch()
#7 E:\projects\magento\app\Mage.php(640): Mage_Core_Model_App->run(Array)
#8 E:\projects\magento\index.php(80): Mage::run('', 'store')
#9 {main}

由于代码量很大,我已将其发布到 pastebin:

控制器/Adminhtml/AdminformController.php

等/config.xml

等/adminhtml.xml

型号/iaso.php

型号/Mysql4/Iaso.php

4

1 回答 1

3

这不起作用,因为您的代码定义了

Turnkeye_Adminform_Model_Mysql4_Iaso extends Mage_Core_Model_Abstract

这是错误的。

您需要从资源模型扩展,即从扩展抽象类的类Mage_Core_Model_Resource_Abstract。这beginTransaction()就是定义的地方。

通常这是通过扩展 from 来完成的Mage_Core_Model_Mysql4_Abstract,因为在 Magento 中还有一些标准 mySQL 资源使用的方法,这些方法是通过以下方式定义的:

Mage_Core_Model_Mysql4_Abstract extends
   Mage_Core_Model_Resource_Db_Abstract extends
       Mage_Core_Model_Resource_Abstract

因此,将您的定义更改为

Turnkeye_Adminform_Model_Mysql4_Iaso extends Mage_Core_Model_Mysql4_Abstract

应该让你回到正确的轨道上。

于 2012-05-18T15:15:28.827 回答