Come principio generale, dovresti essere in grado di fare tutto ciò che fa il sistema Magento stesso senza scrivere una singola riga di SQL. Quasi tutte le strutture di dati Magento usano classi di Magento Model.
Eseguire il codice seguente da qualche parte per vedere come appare un modello di regola di vendita/regola. Questo presuppone che si sia creato un singolo Shopping Cart Price regola in amministrazione con un ID di 1
$coupon = Mage::getModel('salesrule/rule')->load(1);
var_dump($coupon->getData());
Utilizzando i dati oggetto di dumping come una guida, siamo in grado di programatically creare un modello utilizzando il seguente
$coupon = Mage::getModel('salesrule/rule');
$coupon->setName('test coupon')
->setDescription('this is a description')
->setFromDate('2010-05-09')
->setCouponCode('CODENAME')
->setUsesPerCoupon(1)
->setUsesPerCustomer(1)
->setCustomerGroupIds(array(1)) //an array of customer grou pids
->setIsActive(1)
//serialized conditions. the following examples are empty
->setConditionsSerialized('a:6:{s:4:"type";s:32:"salesrule/rule_condition_combine";s:9:"attribute";N;s:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";}')
->setActionsSerialized('a:6:{s:4:"type";s:40:"salesrule/rule_condition_product_combine";s:9:"attribute";N;s:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";}')
->setStopRulesProcessing(0)
->setIsAdvanced(1)
->setProductIds('')
->setSortOrder(0)
->setSimpleAction('by_percent')
->setDiscountAmount(10)
->setDiscountQty(null)
->setDiscountStep('0')
->setSimpleFreeShipping('0')
->setApplyToShipping('0')
->setIsRss(0)
->setWebsiteIds(array(1));
$coupon->save();
Per chi è curioso, il codice sopra è generato, utilizzando la tecnica discussa here
fonte
2010-05-09 17:12:24
Ho appena incontrato la stessa identica questione come pubblicato Ken, qui di seguito. Le azioni non sono impostate da setActionsSerialized() – Laizer
Sì, sembra che le azioni siano memorizzate come modelli separati nel sistema da qualche parte e quindi aggiunte a salesrule/rule. La mia ipotesi è che il campo serializzato esista per un accesso più rapido. Quindi, dopo aver fatto quanto sopra, dovrai aggiungerli manualmente (tramite un metodo, o magari impostando il loro id di regole). –
Yup - assomiglia a Mage_SalesRule_Model_Rule_Action_Product – Laizer