Magento 1.8でインストールスクリプトが実行されるのを妨げるものは何ですか?

magento.stackexchange https://magento.stackexchange.com/questions/10890

質問

チェックアウト時に顧客のコメントを追加するために簡単なモジュールを作成しようとしています。すでにこれを行っている市場にはいくつかの景品があることを知っていますが、機能をさらに拡張する必要があるので、ゼロから進むことにしました。

問題は、インストールスクリプトを実行して実行して必要なテーブルを作成することさえできないことです。コードを何時間も改訂してきましたが、動作させることはできません!!!

どんな助けも大いに歓迎するでしょう...

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 私のスクリプトが実行されるため。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top