2010-12-07 4 views
4

Je travaille avec Magento version 1.4.1.1, et je veux enregistrer une valeur dans la table sales_flat_quote_item (et la passer à sales_flat_order_item).Magento - Ajout d'une nouvelle colonne à sales_flat_quote_item et sales_flat_order_item

J'ai trouvé this tutorial, mais je ne suis pas sûr si elle est toujours d'actualité (à la version Magento 1.4.1.1) car il parle d'une table appelée sales_order, que je crois est maintenant sales_flat_order et ressemble un peu différent.

Cette méthode devrait-elle encore fonctionner? Si oui - Puis-je utiliser pour sales_flat_quote_item et sales_flat_order_item et ce que entity_type_id dois-je mettre dans le Commend:

`insert into eav_attribute('entity_type_id','attribute_code','attribute_model','backend_model','backend_type','backend_table','frontend_model','frontend_input','frontend_input_renderer','frontend_label','frontend_class','source_model','is_global','is_visible','is_required','is_user_defined','default_value','is_searchable','is_filterable','is_comparable','is_visible_on_front','is_html_allowed_on_front','is_unique','is_used_for_price_rules','is_filterable_in_search','used_in_product_listing','used_for_sort_by','is_configurable','apply_to','position','note','is_visible_in_advanced_search' ) 
values(11, 'my_new_column', null, '', 'static', '', '', 'text', '','',null, '', 1,1,1,0,'',0,0,0,0,0,0,1,0,0,0,1,'',0,'',0);` 

Si ce n'est pas la façon de le faire dans la nouvelle version Magento, comment dois-je faire?

Merci, Shani

Répondre

12
  1. Créer un nouveau module avec sa propre classe d'installation étendue à partir Mage_Sales_Model_Mysql4_Setup ou tout simplement l'utiliser comme classe d'installation du module dans config.xml:

    <global> 
        <resources> 
         <your_module_setup> 
           <setup> 
            <module>Your_Module</module> 
            <class>Mage_Sales_Model_Mysql4_Setup</class> 
           </setup> 
         </your_module_setup> 
        </resources> 
    </global> 
    
  2. Utilisez la méthode addAttribute($entity, $attributeCode, $options) intérieur votre script d'installation, il ajoutera automatiquement une nouvelle colonne à l'histoire de sales_flat_order. La même chose pour d'autres entités.

    $installer = $this; 
    $installer->startSetup(); 
    $installer->addAttribute(
        'order', 
        'your_attribute_code', 
        array(
         'type' => 'int', /* varchar, text, decimal, datetime */, 
         'grid' => false /* or true if you wan't use this attribute on orders grid page */ 
        ) 
    ); 
    $installer->endSetup(); 
    
+0

Merci pour votre réponse. Comme je l'ai dit - je veux ajouter la colonne à sales_flat_quote_item et sales_flat_order_item (item, pas sales_flat_order). Est-ce que ça marche toujours pareil? – Shani1351

+0

@ Shani1351 Cela fonctionne de la même façon, il suffit de spécifier 'order_item' et' quote_item' au lieu de 'order' dans le premier argument. 'order' a été utilisé comme exemple. –

+3

Merci Ivan - comme une note pour référence future, le point clé dans cette réponse est d'utiliser 'Mage_Sales_Model_Mysql4_Setup', pas la norme' Mage_Eav_Model_Entity_Setup'. La méthode 'Mage_Sales_Model_Mysql4_Setup' intercepte' addAttribute' pour les objets 'order_item' et' quote_item' qui n'ont pas de valeurs formelles 'entity_type_id' que la classe d'installation standard recherche. –

4

chose importante à savoir quand l'ajout d'attributs aux commandes: vous devez ajouter les mêmes attributs à des citations aussi (au moins dans mon cas, ce résolu tous les problèmes)

+1

@ fbtb - savez-vous si ou pourquoi cela est nécessaire dans tous les cas? – pcronin

+0

@pcronin chaque commande - avant soumise par le client est stockée comme un devis donc un devis est une commande qui n'a pas encore été passée. – fbtb

Questions connexes