Reputation: 2092
I'd like to add an attribute to products, and I want to do this programmatically. So I added a mysql-install-0.1.0.php to a module of mine, and I added this (inspired from existing examples) :
<?php
$installer = $this;
$installer->startSetup();
$installer->addAttribute('catalog_product', 'collection', array(
'type' => 'varchar',
'backend' => '',
'frontend' => '',
'label' => 'Collection',
'input' => 'text',
'class' => '',
'source' => '',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'visible' => false,
'required' => false,
'user_defined' => false,
'default' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => false,
'unique' => false,
'apply_to' => '',
'is_configurable' => false
));
$installer->endSetup();
Syntax seems OK, but when it comes to execute this part of the code, here is the problem :
Fatal error: Call to undefined method Mage_Core_Model_Resource_Setup::addAttribute() in /home/frleq/Dev/projets/AVIP/WORKSPACE/avip_magento/app/code/local/Smile/Magentaho/sql/magentaho_setup/mysql4-install-0.1.0.php on line 7
Do you see what's wrong? Code isn't so complicated, and it is inspired from existing and worling ones...
Thank you
Upvotes: 17
Views: 20080
Reputation: 3655
If you want to use product-related options (filterable, searchable etc.), you should use Mage_Catalog_Model_Resource_Eav_Mysql4_Setup class.
In latest versions of Magento you should use Mage_Catalog_Model_Resource_Setup class.
Upvotes: 13
Reputation: 2058
You are using the wrong setup class. Check your setup class declaration in config.xml. You are using Mage_Core_Model_Resource_Setup
. Try Mage_Eav_Model_Entity_Setup
instead.
Upvotes: 28