在magento模块中创建表

时间:2015-12-15 15:20:36

标签: mysql sql magento-1.7 magento-1.9 magento-1.8

我是magento的新人。如何在db中创建表?我尝试了一些代码,但表没有创建。但是在core_resource表中我设置了我的表。我的php文件的版本与我的配置文件的版本匹配。求助于我,我正在寻找这个问题的答案两天,但无处可寻。

1 个答案:

答案 0 :(得分:0)

创建表格的方法有很多种。

  1. 您可以通过直接phpmyadmin
  2. 创建表格
  3. 编写自己的sql并通过php文件运行
  4. 这两种方式也适用于magento。

    但如果您尝试使用自己的custom module创建自己的表格,那么您必须使用xml和magento models

    我正在为您提供模块示例。

    <强> XML

     <models>
            <magenotification>
                <class>Magestore_Magenotification_Model</class>
                <resourceModel>magenotification_mysql4</resourceModel>
            </magenotification>
            <magenotification_mysql4>
                <class>Magestore_Magenotification_Model_Mysql4</class>
                <entities>
                    <magenotification>
                        <table>magenotification</table>
                    </magenotification>
                    <feedback>
                        <table>magenotification_extension_feedback</table>
                    </feedback>         
                    <feedbackmessage>
                        <table>magenotification_extension_feedbackmessage</table>
                    </feedbackmessage>                          
                    <logger>
                        <table>magenotification_log</table>
                    </logger>
                    <license>
                        <table>magenotification_license</table>
                    </license>
                </entities>
            </magenotification_mysql4>
        </models>
    

    SQL

    <?php
    
    $installer = $this;
    
    $installer->startSetup();
    
    $installer->run("
    
    
    DROP TABLE IF EXISTS {$this->getTable('magenotification_extension_feedbackmessage')};
    DROP TABLE IF EXISTS {$this->getTable('magenotification_extension_feedback')};
    DROP TABLE IF EXISTS {$this->getTable('magenotification_log')};
    DROP TABLE IF EXISTS {$this->getTable('magenotification')};
    
    CREATE TABLE {$this->getTable('magenotification')} (
      `magenotification_id` int(11) unsigned NOT NULL auto_increment,
      `notification_id` int(10) unsigned NOT NULL,
      `url` varchar(255) NOT NULL default '',
      `added_date` datetime NOT NULL,
      UNIQUE (`notification_id`, `url`),
      PRIMARY KEY (`magenotification_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE TABLE {$this->getTable('magenotification_log')} (
      `log_id` int(11) unsigned NOT NULL auto_increment,
      `extension_code` varchar(100) NOT NULL default '',
      `license_type` varchar(50) NOT NULL default '',
      `license_key` text NOT NULL default '',
      `check_date` date NOT NULL,
      `sum_code` varchar(255),
      `response_code` smallint(5),
      `expired_time` varchar(255),
      `is_valid` tinyint(1),
      PRIMARY KEY (`log_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE TABLE {$this->getTable('magenotification_extension_feedback')} (
      `feedback_id` int(11) unsigned NOT NULL auto_increment,
      `code` varchar(255) NOT NULL default '',
      `extension` varchar(255) NOT NULL default '',
      `extension_version` varchar(50) NOT NULL default '',
      `coupon_code` varchar(255) NOT NULL default '',
      `coupon_value` varchar(50) NOT NULL default '',
      `expired_counpon` datetime NOT NULL,
      `content` text NOT NULL default '',
      `file` text NOT NULL default '',
      `comment` text NOT NULL default '',
      `latest_message` text NOT NULL default '',  
      `latest_response` text NOT NULL default '',
      `latest_response_time` datetime,
      `status` tinyint(1) NOT NULL DEFAULT '3',
      `is_sent` tinyint(1) NOT NULL DEFAULT '2',
      `created` datetime NOT NULL,
      `updated` datetime NOT NULL,
      PRIMARY KEY (`feedback_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE TABLE {$this->getTable('magenotification_extension_feedbackmessage')} (
      `feedbackmessage_id` int(11) unsigned NOT NULL auto_increment,
      `feedback_id` int(11) unsigned NOT NULL,
      `feedback_code` varchar(255) NOT NULL default '',
      `user` varchar(255) NOT NULL default '',
      `is_customer` tinyint(1) default '2',
      `message` text NOT NULL default '',
      `file` text NOT NULL default '',
      `posted_time` datetime NULL,
      `is_sent` tinyint(1) default '2',
      PRIMARY KEY (`feedbackmessage_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
        ");
    
    $installer->endSetup(); 
    

    您需要了解如何在magento create custom module获取更多信息。

    custom module with database