2013-01-08 4 views
0

J'ai créé une nouvelle colonne dans la table sales_flat_quote_item appelée 'wiid'. Je veux enregistrer des données dans ce champ quand une liste de souhaits de produit est ajoutée au panier. Alors, voici mon MageWishlist_Model_Item:Ajouter un nouveau champ à sales_flat_quote_item et enregistrer des données

$quote_item = Mage::getModel('sales/quote_item')->load($cart->getQuote()->getItemByProduct($product)->getId()); 
//I log() this $quote_item and is returning the correct object 
$quote_item_id = $quote_item->getId(); 
//Is returning the correct quote item id from database 
$wishlist_item_id = $this->getId(); 
//Is returnig the correct wishlist item id 
$quote_item->setWiid($wishlist_item_id); 
$quote_item->save(); 

Le problème est dans les deux dernières lignes ci-dessus. Ce n'est pas l'enregistrement dans la base de données.

+1

Et quelle est votre question? – cheesemacfly

+0

Je suppose qu'après avoir créé cette colonne, vous avez effectué une actualisation complète du cache. Magento met en cache la structure de vos tables, si vous n'effacez pas le cache, il ne voit pas le champ "wiid". – Ian

+1

essayez de tout supprimer dans 'var/cache' Les informations sur les colonnes de la table sont mises en cache à partir de' Zend_Db'. Le cas normal est que 'Zend_Db' ne sait pas enregistrer les données. Si les données sont définies et que la colonne existe, elle sera enregistrée. comme Ian a dit –

Répondre

0

Vous devez vider 'Cache Storage' sur le backend chaque fois que vous ajoutez un nouveau champ dans la base de données.

0

Vous devez le faire de cette façon.

direclty en utilisant instruction SQL:

$write = Mage::getSingleton('core/resource')->getConnection('core_write'); 
$query = "UPDATE sales_flat_quote_item SET your_field_here = '" . $yourContent . "' where item_id = ". $itemId; 
$write->query($query); 

ou au lieu de se modèle quote_item vous devez obtenir le modèle de devis et itérer des articles comme ci-dessous:

$quote = Mage::getModel('sales/quote')->load($quoteId); 
$items = $quote->getAllItems(); 
foreach ($items as $item){ 
    $item->setWild("your_content_here"); 
    $item->save(); 
} 
Questions connexes