Quelle est la différence entre setData()
et addData()
? Existe-t-il une connexion si je mets à jour un produit ou en crée un nouveau?
Quelle est la différence entre setData()
et addData()
? Existe-t-il une connexion si je mets à jour un produit ou en crée un nouveau?
Réponses:
setData
remplace les données existantes et peut recevoir en paramètre soit une paire valeur / clé soit un tableau.
si vous définissez des paramètres, une paire valeur-clé $_data[key]
devient alors value
. Si vous définissez comme paramètre un tableau $_data
devient ce tableau écrasant ce qu'il contenait auparavant.
Exemple:
$_data = array('k1' => 'v1' , 'k2' => 'v2');
l'appel $obj->setData('k3','v3')
entraîne
$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');
l'appel $obj->setData(array('k3'=>'v3'))
entraîne
$_data = array('k3'=>'v3');
l'appel $obj->setData('k2','v2000')
entraîne
$_data = array('k1' => 'v1' , 'k2' => 'v2000')
l'appel $obj->setData(array('k2'=>'v2000'))
entraîne
$_data = array('k2'=>'v2000');
addData
reçoit en paramètre uniquement un tableau et il fusionne ce tableau avec les données existantes.
Exemple:
$_data = array('k1' => 'v1' , 'k2' => 'v2');
l'appel $obj->addData(array('k3'=>'v3'))
entraîne
$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');
mais appeler $obj->addData(array('k2'=>'v2000'))
résulte en
$_data = array('k1' => 'v1' , 'k2' => 'v2000');
$obj->setData('k2'=>'v2399393')
et non$obj->setData(array('k2'=>'v2000'))
setData ()
la fonction est only set one field value on one call
. c'est possible set multiple field value using multiple call of setData function
.
La fonction addData () estset multiple field values using array with array key as field index.
Juste un exemple:
Vous souhaitez définir deux champs sur l'objet.
Si setData()
j'utilise, vous devez faire ce type de travaux. Besoin Pour deux champs, vous devez appeler la fonction setData à deux.
$ObVarien->setData('fieldA',$X);
$ObVarien->setData('fieldB',$Y);
Mais si j'utilise addData()
alors vous pouvez le fairearray key as field name
$Data=array('fieldA'=>$X,'fieldb'=>$Y)
$ObVarien->addData($Data)
addData () et setData () sont deux Varien_Object
fonctions de classe Library .
addData () utilisant setData () dans le fichier lib pour définir la valeur du champ en utilisant la boucle.
public function addData(array $arr)
{
foreach($arr as $index=>$value) {
$this->setData($index, $value);
}
return $this;
}
setData
pour définir plusieurs champs avec un seul appel.
$obj->setData('k2'=>'v2399393')
alors? :-) (super si vous ajoutez ce point spécifique dans votre réponse)