0

I added two text columns to sales_flat_quote_item in order to store data and for other reasons When i add product to cart. my problem is that i cant save the data. i tried a lot of examples but without any success. Config.xml file :

 <events>
        <catalog_product_load_after>
            <observers>
                <iwp_package>
                    <type>model</type>
                    <class>iwp_package/observer</class>
                    <method>catalogProductLoadAfter</method>
                </iwp_package>
            </observers>
        </catalog_product_load_after>
    </events>

here i add the coulmns :

$installer = $this;
$connection = $installer->getConnection();
$installer->startSetup();
$installer->getConnection()
    ->addColumn($installer->getTable('sales/quote_item'),
    'pack_name',
    array(
        'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
        'nullable' => true,
        'default' => null,
        'comment' => 'pack_name'
    )
);
$installer->endSetup();

This is the code in my observer where i try to save the data :

$quote_item  = Mage::getModel('sales/quote_item')->load($quote->Id);
$quote_item->setPackName($string);
$quote_item->save();

any help?

  • Did you clear the cache after adding the 2 columns? – Marius Jul 10 '14 at 11:53
  • Yes, i even removed cleaned the cache folder. – user3270551 Jul 10 '14 at 12:28
  • What event is your observer running on? What does your config.xml file look like? – Joseph Leedy Jul 10 '14 at 23:50
  • I updated the question with the event in my config file – user3270551 Jul 11 '14 at 10:08
0

try this event it gets triggered only when items gets added to cart

 <events>
        <checkout_cart_add_product_complete>
            <observers>
                <iwp_package>
                    <type>model</type>
                    <class>iwp_package/observer</class>
                    <method>catalogProductLoadAfter</method>
                </iwp_package>
            </observers>
        </checkout_cart_add_product_complete>
    </events>

EDIT

Am Assuming that $quote has quote object, so further you have to loop through all the items in cart.

For that you can try below code snippet

foreach ($quote->getAllItems() as $item) {
    $item->setPackName($string);
    $item->save();
}

OR

foreach ($quote->getAllItems() as $item) {
    $quote_item  = Mage::getModel('sales/quote_item')->load($item->getItemId());
    $quote_item->setPackName($string);
    $quote_item->save();
}
  • OK, but its not my big problem. why "$quote_item->setPackName($string);" not working for me? – user3270551 Jul 11 '14 at 11:12
  • @user3270551 refer to edit section – Deepak Mallah Jul 12 '14 at 3:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.