如果你想在Magento中创建一个自定义模块,并且需要存储和使用自定义数据,下面就是你需要的步骤。我将假定你已经知道关于Magento模块,它们是什么以及如何创建它们。此外,我也假定你已经知道在Magento模块的基本结构。
下面这段放到你的config.xml的适当位置
<global> <ymodel> <class>YNamespace_YModule_Model</class> <resourceModel>quotes_mysql4</resourceModel> </ymodel> <quotes_mysql4> <class>YNamespace_Ymodule_Model_Mymodel</class> <entities> <mymodel> <table>ymodel_ytable</table> </mymodel> </entities> </quotes_mysql4> </global>
然后新建模块
<?php class YNamespace_Ymodule_Model_Mymodel extends Mage_Core_Model_Abstract { public function _construct() { parent::_construct(); $this->_init('ymodel/mymodel'); } }
正如你可以看到在这个类的构造中它初始化了在配置文件中定义的模块。由于模型使用资源(Resources),你现在需要创建一个资源模块。
<?php class Ynamespace_Ymodel_Model_Mysql4_Ymodel extends Mage_Core_Model_Mysql4_Abstract { public function _construct() { $this->_init('ymodel/mymodel', 'id'); } }
因此,使用这种资源,您现在可以访问表并添加/修改。但是你不能显式创建一个此类的对象做到这一点。
$model=Mage::getModel("ymodel/mymodel") ->setName("Subesh") ->setLastname("Pokhrel") ->save();
这样会在数据库新建一行数据,其中name 和lastname 是表的字段。
下面的代码可以用来编辑一行数据。
$model=Mage::getModel("ymodel/mymodel")->load($id) ->setName("Subesh") ->setLastname("Pokharel") ->save();
现在要查询数据库还需要一个过程,在此之前,我先描述下集合(collection)。想象一下集合是一个包含对象的数组,当你从数据库查询到结果,结果中的每一行就是不同的对象。下面是新建一个集合(collection)的代码
<?php class Ynamespace_Ymodel_Model_Mysql4_Mymodel_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract { public function _construct() { parent::_construct(); $this->_init('ymodel/mymodel'); } }
查询这个表的所有行
$allCollection=Mage::getModel("ymodel/mymodel")->getCollection();
如果需要的话,你可以给上面的代码增加一些过滤条件
要拿到单独的行你可以对集合做循环
foreach($allCollection as $objRow){ print_r($objRow); }
源文:http://www.bageshsingh.com/bagesh-blog/2010/04/using-custom-table-for-custom-module-in-magento/