Qual è la differenza tra setData()e addData()? Esiste una connessione se aggiorno un prodotto o ne imposto uno nuovo?
Qual è la differenza tra setData()e addData()? Esiste una connessione se aggiorno un prodotto o ne imposto uno nuovo?
Risposte:
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');
$obj->setData('k2'=>'v2399393')e non$obj->setData(array('k2'=>'v2000'))
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.
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;
}
setDataper impostare più di un campo con una chiamata.
$obj->setData('k2'=>'v2399393')allora? :-) (ottimo se aggiungi questo punto specifico nella tua risposta)