सेटडेटा () और एडडाटा () के बीच अंतर


15

बीच क्या अंतर है setData()और addData()? क्या कोई कनेक्शन है अगर मैं किसी उत्पाद को अपडेट करता हूं या नया सेट करता हूं?

जवाबों:


32

setDataमौजूदा डेटा को ओवरराइड करता है और पैरामीटर के रूप में या तो एक जोड़ी की-वैल्यू के रूप में प्राप्त कर सकता है।
यदि आप एक जोड़ी की-वैल्यू पैरामीटर के रूप में सेट करते हैं तो $_data[key]बन जाता है value। यदि आप पैरामीटर के रूप में सेट करते हैं, तो एक सरणी $_dataउस सरणी को अधिलेखित कर देता है जो कभी भी पहले निहित था।
उदाहरण:

$_data = array('k1' => 'v1' , 'k2' => 'v2');

में कॉलिंग $obj->setData('k3','v3')परिणाम

$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');

में कॉलिंग $obj->setData(array('k3'=>'v3'))परिणाम

$_data = array('k3'=>'v3');

में कॉलिंग $obj->setData('k2','v2000')परिणाम

$_data = array('k1' => 'v1' , 'k2' => 'v2000')

में कॉलिंग $obj->setData(array('k2'=>'v2000'))परिणाम

$_data = array('k2'=>'v2000');

addData केवल एक सरणी के रूप में पैरामीटर प्राप्त करता है और यह उस सरणी को मौजूदा डेटा के साथ विलय कर देता है।

उदाहरण:

$_data = array('k1' => 'v1' , 'k2' => 'v2');

में कॉलिंग $obj->addData(array('k3'=>'v3'))परिणाम

$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');

लेकिन कॉलिंग में $obj->addData(array('k2'=>'v2000'))परिणाम है

$_data = array('k1' => 'v1' , 'k2' => 'v2000');

जब हम करते हैं $obj->setData('k2'=>'v2399393')तब क्या होता है ? :-) (महान यदि आप अपने उत्तर में इस विशिष्ट बिंदु को जोड़ते हैं)
राजीव के टॉमी

@RajeevKTomy। किया हुआ।
मेरियस

क्षमा करें मैं आपको केवल एक बार उभार सकता हूं :-)
राजीव के टॉमी

आपका अपडेट अलग है। आप निर्दिष्ट अनुरोध से ऊपर छोड़ दिया है। मैंने पूछा $obj->setData('k2'=>'v2399393')और नहीं$obj->setData(array('k2'=>'v2000'))
राजीव के टॉमी

@RajeevKTomy। क्या यह एक मजाक है?
मेरियस

7

setData ()

समारोह है only set one field value on one call। यह कर सकते हैं set multiple field value using multiple call of setData function

addData () फ़ंक्शन हैset multiple field values using array with array key as field index.

बस उदाहरण:

आप ऑब्जेक्ट पर सेट करने के लिए दो फ़ील्ड चाहते हैं।

  • फ़ील्ड a> मान-> X
  • फ़ील्ड b> मान-> Y

अगर मैं उपयोग करता हूं setData()तो आपको इस प्रकार के कार्य करने की आवश्यकता है। दो क्षेत्रों के लिए आपको कॉल सेटडाटा फ़ंक्शन दो बुद्धिमान की आवश्यकता है।

$ObVarien->setData('fieldA',$X);
$ObVarien->setData('fieldB',$Y);

लेकिन अगर मैं उपयोग addData()कर रहा हूं तो आप ऐसा कर सकते हैंarray key as field name

$Data=array('fieldA'=>$X,'fieldb'=>$Y)

$ObVarien->addData($Data)

addData () और setData () दो लाइब्रेरी Varien_Objectक्लास फ़ंक्शन हैं।

addData () setData का उपयोग करके () लूप का उपयोग करते हुए सेट फ़ील्ड मान के लिए lib फ़ाइल पर।

public function addData(array $arr)
{
    foreach($arr as $index=>$value) {
        $this->setData($index, $value);
    }
    return $this;
}

4
आप setDataएक कॉल के साथ एक से अधिक फ़ील्ड सेट करने के लिए उपयोग कर सकते हैं ।
मेरियस

@ मेरे पास लिबास क्लास है। और आप और अधिक स्पष्ट तो मुझे जवाब
अमित बेरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.