0

モジュールのアップグレードで Mage::getModel を使用してデータベースにレコードを保存する際に問題があります。

モジュールのインストール時にアフィリエイト プログラムをアフィリエイトプラス モジュール テーブルに追加したいと考えています。私のモジュールは、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 simple Mage::getModel ->setData()->save() を解決します

4

2 に答える 2

0

なぜサビンが機能しないのかと言うのは難しいです。私は...するだろう

1) Magento キャッシュ全体をクリアする

これで問題が解決しない場合は、データベースにレコードを追加してロードするか、モデルのセッター メソッドを使用して単一のオブジェクトをデータベースに書き込みます。エンティティをロード/保存できない場合は、すべてのアフィリエイトとプログラム/プログラムのモデルが正しくインスタンス化されている場合は、デバッグを試みてください。

于 2013-09-13T05:58:13.710 に答える
0

面白い。foreach ループを次のように置き換えたらどうでしょうか。

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

(unset() なしで)、動作しますか? exit; を呼び出すと、モデルが保存されないという問題が発生しました。$model->save(); の直後

于 2013-09-13T08:11:35.407 に答える