تحميل سمة فقط من النموذج وحفظها
-
12-12-2019 - |
سؤال
ما هي الطريقة الأكثر فعالية (باستخدام أساليب 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
, ، الذي يتعامل مع وظيفة الحفظ.
لا تنتمي إلى magento.stackexchange