سؤال

ما هي الطريقة الأكثر فعالية (باستخدام أساليب Magento) لتحميل سمة العميل فقط وتغيير قيمتها وحفظها.

هل كانت مفيدة؟

المحلول

إذا كان لديك نموذج العميل بالفعل (على الأقل تم تحميله جزئيًا)، فيمكنك استخدام هذا السطر لحفظ سمة واحدة:

$customer->getResource()->saveAttribute($customer, 'attribute_code_goes_here');

في الواقع، لكي ينجح هذا، يجب أن تكون السمات الوحيدة الموجودة في ملف $customer المثال هي entity_id والسمة التي تريد حفظها.يمكنك تحميل العميل بسمات EAV المحددة فقط مثل هذا:

$customer = Mage::getModel('customer/customer')
    ->load($customerId, array('attribute_code_goes_here'));

نصائح أخرى

$customer = Mage::getModel('customer/customer')->loadByEmail('customer@email.com');

//or if you know the customer ID
$customer = Mage::getModel('customer/customer')->load($id, array('attribute_code'));

// attribute_code
$customer->setAttributeCode('new value here')->save();

سيؤدي هذا إلى حفظ القيمة التي تم تغييرها فقط.يقوم Magento بإزالة جميع العناصر التي لم يتم تغييرها ويحفظ فقط ما تم تغييره من البيانات.

يفعل ذلك في: Mage_Eav_Model_Entity_Abstract::_collectSaveData() الذي هو والد Mage_Customer_Model_Resource_Customer, ، الذي يتعامل مع وظيفة الحفظ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top