西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > magento教程 >

如何在Magento单自定义模块中使用多个数据库表

时间:2014-08-02 17:52来源:未知 作者:好模板 点击:
用数据库表创建一个模块,互动是很简单的。大部分的开发人员使用 magento 模块创建者创建此类的模块。但是,如果你想与多个数据库表的一个模块。以下是模块与两个数据库表的示例
用数据库表创建一个模块,互动是很简单的。大部分的开发人员使用 magento 模块创建者创建此类的模块。但是,如果你想与多个数据库表的一个模块。以下是模块与两个数据库表的示例。
 
第 1 步。以下查询与创建您的自定义模块的安装文件。
 
 
CREATE TABLE `test` (
`test_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 25 ) NOT NULL
) ENGINE = MYISAM 
 
CREATE TABLE `test2` (
`test2_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 25 ) NOT NULL
) ENGINE = MYISAM
第 2 步。创建库文件来注册您的模块在 app/etc/modules/Mypackage_Mymodule.xml 下
 
 
<?xml version="1.0"?>
<config>
    <modules>
        <Mypackage_Mymodule>
            <active>true</active>
            <codePool>local</codePool>
        </Mypackage_Mymodule>
    </modules>
</config>
第 3 步。模块配置文件应该看起来像以下
 
应用程序、 代码、 地方/Mypackage/Mymodule/etc/config.xml
 
 
<?xml version="1.0"?>
<config>
    <modules>
        <Mypackage_Mymodule>
            <version>0.1.0</version>
        </Mypackage_Mymodule>
    </modules>
    <global>
        <models>
            <Mymodule>
                <class>Mypackage_Mymodule_Model</class>
                <resourceModel>mymodule_mysql4</resourceModel>
            </mymodule>
            
            <!-- model vs db table relation -->
            <mymodule_mysql4>
                <class>Mypackage_Mymodule_Model_Mysql4</class>
                <!-- db table with name test -->
                <entities>
                    <test>
                        <table>test</table>
                    </test>
             <test2>
                        <table>test2</table>
                    </test2>
 
                </entities>
            </mymodule_mysql4>
        </models>
        <resources>
            <mymodule_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </mymodule_write>
            <mymodule_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </mymodule_read>
        </resources>
    </global>
</config>
第 4 步。现在,创建模型 Test.php 和 Test2.php。在这里我们用的表测试和 test2 的处理程序配置这些模型。
 
/app/code/local/Mypackage/Mymodule/Model/Test.php
 
 
<?php
 
class Mypackage_ Mymodule_Model_Test extends Mage_Core_Model_Abstract
{
    
    public function _construct()
    {
        parent::_construct();
        $this->_init('mymodule/test');
    }
}
 
/app/code/local/Mypackage/Mymodule/Model/Test2.php
 
 
<?php
 
class Mypackage_Mymodule_Model_Test2 extends Mage_Core_Model_Abstract
{
    
   public function _construct()
    {
        parent::_construct();
        $this->_init('mymodule/test2');
    }
}
第 5 步。现在,创建模型试验和 test2 的资源模型。在这些文件中我们也设置主键的表测试和 test2。
 
/app/code/local/Mypackage/Mmodule/Model/Mysql4/Test.php
 
 
<?php
 
class Mypackage_Mymodule_Model_Mysql4_Test extends Mage_Core_Model_Mysql4_Abstract
{
    public function _construct()
    {    
        $this->_init('mymodule/test', 'test_id');
    }
}
 
/app/code/local/Mypackage/Mmodule/Model/Mysql4/Test2.php。
 
 
<?php
 
class Mypackage_Mymodule_Model_Mysql4_Test2 extends Mage_Core_Model_Mysql4_Abstract
{
    public function _construct()
    {    
        $this->_init('mymodule/test2', 'test2_id');
    }
}
第 6 步。创建一个集合类,这样,我们可以从表测试和 test2 检索数据。
 
/local/Mypackage/Mymodule/Model/Mysql4/Test/Collection.php
 
 
<?php
 
class Mypackage_Mymodule_Model_Mysql4_Test_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
    public function _construct()
    {
        parent::_construct();
        $this->_init('mymodule/test');
    }
}
 
/local/Mypackage/Mymodule/Model/Mysql4/Test2/Collection.php
 
 
<?php
 
class Mypackage_Mymodule_Model_Mysql4_Test2_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
    public function _construct()
    {
        parent::_construct();
        $this->_init('mymodule/test2');
    }
}
 
 
所以,现在你有两个表的自定义模块。你的模块可以与这些表与他们的模型和各自的集合,如下所示:
 
 
$testModel = Mage::getModel('mymodule/test')
    ->setName("abcd")
    ->save();
 
$test2Model = Mage::getModel('mymodule/test2')
    ->setName("abcd")
    ->save();
 
希望这将帮助你。
(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容