Differenza tra setData () e addData ()


15

Qual è la differenza tra setData()e addData()? Esiste una connessione se aggiorno un prodotto o ne imposto uno nuovo?

Risposte:


32

setDatasovrascrive i dati esistenti e può ricevere come parametro una coppia chiave-valore o un array.
se imposti come parametri $_data[key]diventa quindi una coppia chiave-valore value. Se si imposta come parametro una matrice $_datadiventa quella matrice sovrascrivendo qualsiasi cosa contenesse in precedenza.
Esempio:

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

la chiamata $obj->setData('k3','v3')risulta in

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

la chiamata $obj->setData(array('k3'=>'v3'))risulta in

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

la chiamata $obj->setData('k2','v2000')risulta in

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

la chiamata $obj->setData(array('k2'=>'v2000'))risulta in

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

addData riceve come parametro solo un array e unisce tale array con i dati esistenti.

Esempio:

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

la chiamata $obj->addData(array('k3'=>'v3'))risulta in

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

ma la chiamata $obj->addData(array('k2'=>'v2000'))risulta in

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

cosa succede quando lo facciamo $obj->setData('k2'=>'v2399393')allora? :-) (ottimo se aggiungi questo punto specifico nella tua risposta)
Rajeev K Tomy

@RajeevKTomy. Fatto.
Marius

Mi dispiace di poterti votare una sola volta :-)
Rajeev K Tomy,

il tuo aggiornamento è diverso. Hai saltato la richiesta sopra specificata. Ho chiesto $obj->setData('k2'=>'v2399393')e non$obj->setData(array('k2'=>'v2000'))
Rajeev K Tomy,

@RajeevKTomy. È uno scherzo?
Marius

7

setData ()

la funzione è only set one field value on one call. può set multiple field value using multiple call of setData function.

La funzione addData () èset multiple field values using array with array key as field index.

Solo un esempio:

Volete due campi da impostare sull'oggetto.

  • campo a> Valore-> X
  • campo b> Valore-> Y

Se setData()sto usando, allora devi fare questo tipo di works.need Per due campi devi chiamare la funzione setData in due modi.

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

Ma se sto usando addData(), puoi farloarray key as field name

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

$ObVarien->addData($Data)

addData () e setData () sono due Varien_Objectfunzioni della classe Library .

addData () usando setData () nel file lib per impostare il valore del campo usando loop.

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

4
È possibile utilizzare setDataper impostare più di un campo con una chiamata.
Marius

@Marius ho controllato la classe lib. e tu rispondi più chiaro di me
Amit Bera
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.