我正在为Magento模块工作,它涉及到每个提交的订单的总价格并将其存储在SQL表中。我的第一本能是使用原始的SQL命令来做到这一点,但根据我迄今为止关于该主题阅读的大多数Magento文章,似乎我应该使用Magento/Zend类来完成此操作。Magento访问SQL数据库
如何使用Magento类访问SQL数据库,以及使用原始SQL命令而不使用原始SQL命令的优点是什么?
所有帮助非常感谢,我始终接受一个答案!
我正在为Magento模块工作,它涉及到每个提交的订单的总价格并将其存储在SQL表中。我的第一本能是使用原始的SQL命令来做到这一点,但根据我迄今为止关于该主题阅读的大多数Magento文章,似乎我应该使用Magento/Zend类来完成此操作。Magento访问SQL数据库
如何使用Magento类访问SQL数据库,以及使用原始SQL命令而不使用原始SQL命令的优点是什么?
所有帮助非常感谢,我始终接受一个答案!
问题“为什么ORM/ActiveRecord的使用比原始SQL更好”与“为什么我需要使用MVC或编程模式?”相同。这有点哲学问题,所以你可以用Google找到很多答案。
您必须创建业务和资源模型。此外,您需要使用config.xml文件在您的模块等文件夹中以及每个模型类的_construct方法中将资源模型分配给业务模型。
例如,你有My_Module_Model_Bussines和资源类My_Module_Model_Resource_Bussines商务舱。最小的实现(且必须)的这些类
首先一个:
class My_Module_Model_Business extends Mage_Core_Model_Abstract
{
protected function _construct()
{
$this->_init('my_module/business');
}
}
二:
class My_Module_Model_Resource_Business extends Mage_Core_Model_Mysql4_Abstract
{
protected function _construct()
{
$this->_init('my_module/table', 'id');
}
}
其中方法_init的每个类的第一个参数是XML配置中的xpath,第二个(在资源类中)是主键名称。
而且在config.xml文件中必须有这样的事情:如果你使用的Magento的新版本1.5.1相比
Mage::getModel('my_module/business')->setFirstField('some data')
->setTotal('100.1')
->setOrderId(10)
->save();
:
<?xml version="1.0"?>
<config>
<modules>
<My_Module>
<version>YOUR_VERSION_OF_MODULE(e.g. 0.0.1)</version>
</My_Module>
</modules>
<global>
<models>
<my_module>
<class>My_Module_Model</class>
<!-- name of the resource model node -->
<resourceModel>my_module_resource</resourceModel>
</my_module>
<my_module_resource>
<class>My_Module_Model_Resource</class>
<entities>
<table>
<table>your_table_name</table>
</table>
</entities>
</my_module_resource>
</models>
<!-- another config nodes -->
</global>
</config>
之后,你可以使用这样的事情您需要将类名中的Mysql4更改为资源