Magento 1.8でインストールスクリプトが実行されるのを妨げるものは何ですか?
-
16-10-2019 - |
質問
チェックアウト時に顧客のコメントを追加するために簡単なモジュールを作成しようとしています。すでにこれを行っている市場にはいくつかの景品があることを知っていますが、機能をさらに拡張する必要があるので、ゼロから進むことにしました。
問題は、インストールスクリプトを実行して実行して必要なテーブルを作成することさえできないことです。コードを何時間も改訂してきましたが、動作させることはできません!!!
どんな助けも大いに歓迎するでしょう...
config.xml
<?xml version="1.0"?>
<config>
<modules>
<Namespace_CheckoutComments>
<version>0.1.0</version>
</Namespace_CheckoutComments>
</modules>
<global>
<resources>
<checkoutcomments_setup>
<setup>
<module>Namespace_CheckoutComments</module>
</setup>
</checkoutcomments_setup>
</resources>
<models>
<checkoutcomments>
<class>Namespace_CheckoutComments_Model</class>
<resourceModel>checkoutcomments_resource</resourceModel>
</checkoutcomments>
<checkoutcomments_resource>
<class>Namespace_CheckoutComments_Model_Resource</class>
<entities>
<comments_table>
<table>checkout_comments</table>
</comments_table>
</entities>
</checkoutcomments_resource>
</models>
</global>
</config>
sql/namespace_checkoutcomments_setup/install-0.1.0.php
<?php
/* @var $installer Mage_Core_Model_Resource_Setup */
$installer = $this;
$installer->startSetup();
$table = $installer->getConnection()->newTable($installer->getTable('checkoutcomments/comments_table'))
->addColumn('comment_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
'identity' => true,
'unsigned' => true,
'nullable' => false,
'primary' => true,
), 'Comment ID')
->addColumn('order_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
'unsigned' => true,
'nullable' => false,
), 'Real Order ID')
->addColumn('comment', Varien_Db_Ddl_Table::TYPE_INTEGER, '64k', array(
), 'Comment')
->addForeignKey(
$installer->getFkName(
'checkoutcomments/comments_table',
'order_id',
'sales/order',
'entity_id'
),
'order_id', $installer->getTable('sales/order'), 'entity_id',
Varien_Db_Ddl_Table::ACTION_CASCADE, Varien_Db_Ddl_Table::ACTION_CASCADE)
->setComment('Checkout Comments');
$installer->getConnection()->createTable($table);
$installer->endSetup();
インストールスクリプトまたはconfig.xmlのどちらが問題なのかわかりません。これが必要なテーブルを実行して作成しない主な理由は何ですか?
+-------------------------+------------+--------------+
| code | version | data_version |
+-------------------------+------------+--------------+
| adminnotification_setup | 1.6.0.0 | 1.6.0.0 |
| admin_setup | 1.6.1.1 | 1.6.1.1 |
| api2_setup | 1.0.0.0 | 1.0.0.0 |
| api_setup | 1.6.0.1 | 1.6.0.1 |
| backup_setup | 1.6.0.0 | 1.6.0.0 |
| bundle_setup | 1.6.0.0.1 | 1.6.0.0.1 |
| captcha_setup | 1.7.0.0.0 | 1.7.0.0.0 |
| catalogindex_setup | 1.6.0.0 | 1.6.0.0 |
| cataloginventory_setup | 1.6.0.0.2 | 1.6.0.0.2 |
| catalogrule_setup | 1.6.0.3 | 1.6.0.3 |
| catalogsearch_setup | 1.6.0.0 | 1.6.0.0 |
| catalog_setup | 1.6.0.0.18 | 1.6.0.0.18 |
| checkoutcomments_setup | 0.0.1 | 0.0.1 |
| checkout_setup | 1.6.0.0 | 1.6.0.0 |
解決
3番目の列で:
addColumn(
'comment',
Varien_Db_Ddl_Table::TYPE_INTEGER,
'64k',
array(),
'Comment'
)
あなたが持っている type_int
, 、あなたが探しているように見えます type_text
64K文字制限のあるコメントフィールドとして定義します。これに失敗した場合、テーブルが適切にインスタンス化されたり、失敗したりしません。
他のヒント
私のフォルダーが持っていることがわかりました namespace_checkoutcomments_setup
必要なとき checkoutcomments_setup
私のスクリプトが実行されるため。
所属していません magento.stackexchange