2015-01-02 27 views
0

我想在自定義擴展中創建新表。表沒有創建或給出任何錯誤。 這是我在本地/ Pfay/Test/sql/Test_setup/mysql4-install-0.1.0.php中的'mysql4-install-0.1.php'文件。如何在magento擴展中創建Mysql表?

$installer = $this; 
$installer->startSetup(); 
$installer->run(" 
    DROP TABLE IF EXISTS {$this->getTable('Test')}; 
    CREATE TABLE {$this->getTable('Test')} (
     `pfay_test_id` int(11) unsigned NOT NULL auto_increment, 
     `full_name` varchar(255) NULL , 
     `email` varchar(255) NULL , 
     `question` text NULL , 
     `product_id` int(11) NULL default '', 
     PRIMARY KEY (`question_id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
     "); 
    $installer->endSetup(); 

這是內部本地/ Pfay /測試/等/的Config.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Pfay_Test> 
      <version>0.1.0</version> 
     </Pfay_Test> 
    </modules> 
    <frontend> 
     <routers> 
      <routeurfrontend> 
       <use>standard</use> 
       <args> 
        <module>Pfay_Test</module> 
        <frontName>test</frontName> 
       </args> 
      </routeurfrontend> 
     </routers> 
     <layout> 
      <updates> 
       <test> 
        <file>test.xml</file> 
       </test> 
      </updates> 
     </layout> 
    </frontend> 
    <admin> 
     <routers> 
      <test> 
       <use>admin</use> 
       <args> 
        <module>Pfay_Test</module> 
        <frontName>admintest</frontName> 
       </args> 
      </test> 
     </routers> 
    </admin> 
    <adminhtml> 
     <layout> 
      <updates> 
       <test> 
        <file>test.xml</file> 
       </test> 
      </updates> 
     </layout> 
     <menu> 
      <test translate="title" module="adminhtml"> 
       <title>Question Answer</title> 
       <sort_order>100</sort_order> 
       <children> 
        <set_time> 
         <title>Question</title> 
         <action>admintest/adminhtml_index</action> 
        </set_time> 
       </children> 
      </test> 
     </menu> 
    </adminhtml> 
    <global> 
     <models> 
      <test> 
       <class>Pfay_Test_Model</class> 
       <resourceModel>test_mysql4</resourceModel> 
      </test> 
      <test_mysql4> 
       <class>Pfay_Test_Model_Mysql4</class> 
       <entities> 
        <test> 
         <table>qs_question</table> 
        </test> 
       </entities> 
      </test_mysql4> 
     </models> 
     <resources> 
      <Test_setup> 
       <setup> 
        <module>Pfay_Test</module> 
       </setup> 
       <connection> 
        <use>core_setup</use> 
       </connection> 
      </Test_setup> 
      <Test_write> 
       <connection> 
        <use>core_write</use> 
       </connection> 
      </Test_write> 
      <Test_read> 
       <connection> 
        <use>core_read</use> 
       </connection> 
      </Test_read> 
     </resources> 
     <blocks> 
      <test> 
       <class>Pfay_Test_Block</class> 
      </test> 
     </blocks>   
    </global> 
</config> 

我 '的Config.xml' 文件我花5小時試圖找到解決方案,但未能成功。它在數據庫的'core_resource'表中插入'test_setup',但不創建表。請建議一種方法。 在此先感謝。

回答

0

我覺得文件名'mysql4-install-0.1.php'有錯誤,應該是'mysql4-install-0.1.0.php'。

+0

aton我更改爲'mysql4-install-0.1.0.php'但沒有工作。 –

+0

嘗試檢查執行是否達到sql file.Put die('here');在$ installer-> startSetup();之後刷新頁面。另外我不確定這個問題,但是你的文件夾「Test_setup」應該是「test_setup」。首先檢查 – aton1004

+0

也在你的config.xml文件中, ??這是必需的嗎? – aton1004

0

模塊已安裝。這就是爲什麼安裝腳本沒有得到執行。它只在magento上執行第一次。事件你聯合安裝它。所以在這裏你可能需要更新腳本。

您可以更改模塊 的版本修改您的config.xml中1.0.0.0

<global> 
<resources> 
    <mymodule_setup> 
     <setup> 
      <module>Sulman_Custompermissions</module> 
     </setup> 
     <connection> 
      <use>core_setup</use> 
     </connection> 
    </mymodule_setup> 
</resources> 

和更改安裝腳本文件名mysql4安裝,1.0.0.0.php和從core_resource表中刪除條目,並清除緩存並檢查...

+0

我將其更改爲1.1.0,並從core_resource中刪除了test_setup。但它沒有奏效。 –

+0

好的,然後複製該安裝文件,並將其重命名爲mysql4-upgrade-1.0.0.0-1.1.0.php,並在配置版本應爲1.1.0 –