【问题标题】:Magento 1.7 Mage::()->getModel() don't workMagento 1.7 Mage::()->getModel() 不起作用
【发布时间】:2013-09-17 16:47:00
【问题描述】:

我在模块升级中使用 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 内部循环并为每个值设置数据。
  • 保存前的setId()

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

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

【问题讨论】:

    标签: php magento magento-1.7


    【解决方案1】:

    很难说,为什么 savin 不起作用。我会

    1) 清除整个 magento 缓存

    如果这没有帮助,请向数据库中添加一条记录并尝试加载它,或者使用模型的 setter 方法将单个对象写入数据库。如果您无法加载/保存任何实体,请尝试调试,如果所有的附属程序/程序模型都正确实例化。

    【讨论】:

    • 感谢您的回答。缓存当然是清楚的。代码$_program = Mage::getModel('affiliateplusprogram/program')->load(2); $_name = $_program->getName(); $_name = 'Program Afiliacyjny plus'; $_program->setName($_name); $_program->save(); 工作。但没有新纪录。
    • 您是否已经检查了所有模型?例如Model,Mysql4 Model 一个 Collection Model?
    • 模型是从affiliate plus 模块完成的。是商业模式。我使用这个模块中的模型。我在foreach($_programList as $_v){ $_program = Mage::getModel('affiliateplusprogram/program'); foreach($_v as $_key=>$_val){ $_program->{'set'.ucfirst($_key)}($_val); } $_program->save(); unset($_program); } 上修改了循环,但仍然无法正常工作。
    【解决方案2】:

    有趣。如果将 foreach 循环替换为:

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

    (没有 unset()),它会工作吗?如果调用退出,我遇到了没有保存模型的问题;紧随 $model->save();

    【讨论】:

    • 添加退出很有帮助,因为是事务错误。但是如果自动加入字段为 0。当我使用管理面板时,填充的是一张表。我不知道为什么是回滚。
    • 也许这是个愚蠢的问题,但是 - 检查附属加模块中的 _beforeSave 方法 - 模型、集合?他们可以中断保存过程。
    • 是的,我检查了 _beforeSave。 0 现在我不浪费我的时间,我为这个表创建了自己的模型。当我有代码foreach($_programList as $_v){ $_program = Mage::getModel('unizeto_partner/affiliateplusprogram'); foreach($_v as $_key=>$_val){ $_program->{'set'.ucfirst($_key)}($_val); } $_program->save(); } 时无法工作。当我删除 $_val 数据设置为数据库的默认值。我不知道为什么
    • 为什么不$_program->setData($_key, $_val);
    • 存在于 Affiliate Plus 触发器、存储过程等的安装或更新脚本中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多