親エンティティを保存しないで属性の値を保存したいと考えています。モジュールのsql/setupファイル(ref)を使用して新しい顧客属性を作成しました。これで、既存の顧客ごとにその属性を設定します。エンティティのロード(afterLoad)中にnull値を検出してコンテンツを生成する属性のバックエンドモデルを作成しましたが、プロセスのその時点でエンティティを保存することを躊躇しています。親エンティティをMagentoに保存せずに属性値を保存する
class Aligent_Referral_Model_Customer_Attribute_Backend_Referralcode extends Mage_Eav_Model_Entity_Attribute_Backend_Abstract
{
public function afterLoad($oCustomer)
{
$vAttrCode = $this->getAttribute()->getAttributeCode();
$vValue = $oCustomer->getData($vAttrCode);
if (empty($vValue)){
$oCustomer->setData($vAttrCode, Mage::helper('referral')->generateRafCode($oCustomer));
}
return $this;
}
}
理想的には、私はそれを保存]をクリック、ユーザーに依存しないように、そのafterLoad
方法で$this->getAttribute()->setValue('blah')->save()
のようなものを呼び出すしたいと思います。
私は、すべての顧客のコレクションを読み込んで値を設定するスクリプトを書くことができましたが、50,000人以上の顧客がいて、それをプロダクションサーバーで実行することによるパフォーマンスへの影響が懸念されています...
ご迷惑をおかけして申し訳ございません。
JD
完全にエレガントで演奏性があります。おかげで@vinai –
素敵!私は今、それを私のメモに入れておくのが大好きです。 –
@ dan.codesメモを保存しますか?私はStackOverflowの全体のポイントだと思った...私はこの質問に戻ってきた理由は、私はそれを再度使用する必要があり、ノートを持っていないからです! :) –