Unterschied zwischen setData () und addData ()

15

Was ist der Unterschied zwischen setData()und addData()? Besteht eine Verbindung, wenn ich ein Produkt aktualisiere oder ein neues einstelle?

user1240207
quelle

Antworten:

32

setDataÜberschreibt die vorhandenen Daten und kann als Parameter entweder ein Schlüsselpaar-Wert oder ein Array empfangen.
Wenn Sie als Parameter einen Paar-Schlüsselwert festlegen, $_data[key]wird dieser zu value. Wenn Sie als Parameter festlegen, wird ein Array $_datazu dem Array, das überschreibt, was immer es zuvor enthielt.
Beispiel:

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

$obj->setData('k3','v3')Ergebnisse aufrufen in

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

$obj->setData(array('k3'=>'v3'))Ergebnisse aufrufen in

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

$obj->setData('k2','v2000')Ergebnisse aufrufen in

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

$obj->setData(array('k2'=>'v2000'))Ergebnisse aufrufen in

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

addData empfängt als Parameter nur ein Array und führt dieses Array mit den vorhandenen Daten zusammen.

Beispiel:

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

$obj->addData(array('k3'=>'v3'))Ergebnisse aufrufen in

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

aber das Aufrufen von $obj->addData(array('k2'=>'v2000'))Ergebnissen in

$_data = array('k1' => 'v1' , 'k2' => 'v2000');
Marius
quelle
Was passiert, wenn wir es $obj->setData('k2'=>'v2399393')dann tun ? :-) (großartig, wenn Sie diesen speziellen Punkt in Ihrer Antwort hinzufügen)
Rajeev K Tomy
@ RajeevKTomy. Erledigt.
Marius
Entschuldigung, ich kann dich nur einmal positiv stimmen :-)
Rajeev K Tomy
Ihr Update ist anders. Sie haben die oben angegebene Anfrage übersprungen. Ich fragte $obj->setData('k2'=>'v2399393')und nicht$obj->setData(array('k2'=>'v2000'))
Rajeev K Tomy
@ RajeevKTomy. Ist das ein Witz?
Marius
7

setData ()

Funktion ist only set one field value on one call. es kann set multiple field value using multiple call of setData function.

Die Funktion addData () istset multiple field values using array with array key as field index.

Nur ein Beispiel:

Sie möchten zwei Felder für ein Objekt festlegen.

  • Feld a> Wert-> X
  • Feld b> Wert-> Y

Wenn ich benutze, setData()dann müssen Sie diese Art von Arbeiten machen. Für zwei Felder müssen Sie setData-Funktion zwei-fach aufrufen.

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

Aber wenn ich addData()dann benutze, kannst du das tunarray key as field name

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

$ObVarien->addData($Data)

addData () und setData () sind zwei Bibliotheksklassenfunktionen Varien_Object.

addData () mit setData () in der lib-Datei zum Festlegen des Feldwerts mit loop.

public function addData(array $arr)
{
    foreach($arr as $index=>$value) {
        $this->setData($index, $value);
    }
    return $this;
}
Amit Bera
quelle
4
Mit können Sie setDatamehr als ein Feld mit einem Aufruf festlegen.
Marius
@Marius Ich habe die lib Klasse überprüft. und du antwortest klarer als ich
Amit Bera