में अपनी मूल इकाई को सहेजे बिना एक विशेषता मान सहेजें, मैं अपनी मूल इकाई को सहेजे बिना किसी विशेषता के मान को सहेजने में सक्षम होना चाहता हूं। मैंने अपने मॉड्यूल की एसक्यूएल/सेटअप फ़ाइल (ref) के माध्यम से एक नया ग्राहक विशेषता बनाई है, और अब मैं मौजूदा ग्राहकों में से प्रत्येक के लिए उस विशेषता को पॉप्युलेट करना चाहता हूं। मैंने उस विशेषता के लिए बैकएंड मॉडल बनाया है जो इकाई लोड (बाद के लोड) के दौरान शून्य मानों का पता लगाता है और सामग्री उत्पन्न करता है, लेकिन प्रक्रिया में उस बिंदु पर इकाई को सहेजने में मुझे संकोच नहीं है।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 से अधिक ग्राहकों है और मैं एक उत्पादन सर्वर पर चल रहा है कि प्रदर्शन प्रभाव के बारे में चिंतित हूँ ...
किसी भी विचार की सराहना की।
जेडी
पूरी तरह से सुरुचिपूर्ण और प्रदर्शनकारी। धन्यवाद @vinai –
अच्छा !! मुझे वह पसंद है, इसे अब मेरे नोट्स में डाल दिया। –
@ dan.codes आप नोट्स रखते हैं? मैंने सोचा था कि स्टैक ओवरफ्लो का पूरा बिंदु था ... आप देखेंगे कि इस सवाल पर मैं वापस आ गया हूं क्योंकि मुझे इसे फिर से उपयोग करने की आवश्यकता है और नोट्स नहीं हैं! :) –