Magento 1.7 Mage ::() - > getModel()不起作用

时间:2013-09-13 05:19:55

标签: php magento magento-1.7

我在模块升级中使用Mage :: getModel在数据库中保存记录时遇到问题。

我希望在安装我的模块时将联盟计划添加到affiliateplus模块表。我的模块覆盖了affiliateplus模块。

在mysql4-upgrade-0.1.3-0.1.4.php中我有代码

$installer = $this;
$installer->startSetup();

$_programList =[
    'affiliate'=>[
            'program_id'=>1,
            'name' =>'Program Afiliacyjny',
            'created_date' =>date('Y-m-d'),
            'status' =>1,
            'expire_time'=>0,
            'num_account'=>2,
            'total_sales_amount' =>0.00,
            'commission_type'=>'precentage',
            'commission'=>1,
            'discount_type'=>'precentage',
            'discount' =>1,
            'autojoin' =>1,
            'scope' =>0,
            'customer_groups' =>null,
            'show_in_welcome' =>0,
            'valid_from' =>null,
            'valid_to' =>null,
            'use_coupon' =>0,
            'coupon_pattern'=>null ,
            'affiliate_type'=>null ,
            'description' =>'Program Afiliacyjny',
            'conditions_serialized' =>'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";}',
            'actions_serialized' =>'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";}',
            'is_process' =>0,
            'use_tier_config'=>0 ,
            'max_level' =>0,
            'tier_commission'=>null ,
            'sec_commission' =>0,
            'sec_commission_type'=>0 ,
            'secondary_commission' =>0,
            'sec_discount' =>0,
            'sec_discount_type'=>null ,
            'secondary_discount' =>0,
            'customer_group_ids' =>'1',
            'use_sec_tier' =>0,
            'sec_tier_commission'=>null
    ],
    ['more elements...']
];

foreach($_programList as $_v){
    $_program = Mage::getModel('affiliateplusprogram/program');
    $_program->setData($_v);
    $_program->save();

    unset($_program);
}
$installer->endSetup();

我也尝试过:

  • foreach内部循环和每个值的setData。
  • 保存前的setId()

当我在foreach之后显示对象时,它的对象只有我没有方法的值。 Magento不显示错误和警告。我的模块升级到好的版本但在数据库表中是空的。

在所有教程中解决id简单的Mage :: getModel - > setData() - > save()

2 个答案:

答案 0 :(得分:0)

很难说,为什么萨文不工作。我会

1)清除整个magento缓存

如果这不起作用,请向数据库添加记录并尝试加载它,或者使用模型的setter方法将单个对象写入数据库。如果您无法加载/保存任何实体,请尝试调试,如果所有affiliateplusprogram / program模型都正确实例化。

答案 1 :(得分:0)

有趣。如果用以下代码替换foreach循环该怎么办?

foreach($_programList as $_v){
  Mage::getModel('affiliateplusprogram/program')
    ->setData($_v)
    ->save();
}

(没有unset()),它会起作用吗?如果调用exit,我遇到了一个没有保存模型的问题;在$ model-> save();

之后