catalog_product_flat列タイプを変更する方法
私が管理しているWebサイトでは、価格に小数点以下5桁が必要です。私は先に進んで、これを達成できるように、少なくとも12のファイル/テーブルを完全に変更しました。しかし(常にaが存在するため)、に問題があるようcatalog_product_flat_Xです。 説明させてください:前面の価格の場合、ほとんどの場合、それはを呼び出すMage_Catalog_Model_Product->getPrice()ことになります。これは、私が理解しているように、フラットテーブルで価格を探します(フラットテーブルが有効になっている場合)。問題は、データの再インデックス付けです。 フラットテーブルにフォーマット付きの価格がある場合、DECIMAL(12,5)[フラットデータの再インデックス]行の[再インデックス]リンクをクリックするとALTER、フラットテーブルがに戻りDECIMAL(12,4)ます。 時間のかなりextented量のために検索した後、私は、関数accros来た app/code/core/Mage/Catalog/Model/Resource/Product/Flat/Indexer.php と呼ばれていますprepareFlatTable($storeId)。次に、この関数convertOldColumnDefinition($column)はフラットテーブルのすべての列を呼び出します(この場合)。 最後に、この関数を見る app/code/core/Mage/Catalog/Model/Resource/Helper/Abstract.php と、すべてが変換されdecimalてnumericいるようです: case 'decimal': case 'numeric': $length = $proposedLength; $type = Varien_Db_Ddl_Table::TYPE_DECIMAL; break; これ$proposedLengthの結果は次のとおりです。 $definition = trim($column['type']); if (!preg_match('/([^(]*)(\\((.*)\\))?/', $definition, $matches)) { throw Mage::exception( 'Mage_Core', Mage::helper('core')->__("Wrong old style column type definition: {$definition}.") ); } $proposedLength = (isset($matches[3]) && strlen($matches[3])) ? $matches[3] : null; …