Qual é a diferença entre setData()e addData()? Existe uma conexão se eu atualizar um produto ou definir um novo?
Qual é a diferença entre setData()e addData()? Existe uma conexão se eu atualizar um produto ou definir um novo?
Respostas:
setDatasubstitui os dados existentes e pode receber como parâmetro um valor-chave de par ou uma matriz.
se você definir como parâmetros, um valor-chave de par $_data[key]se tornará value. Se você definir como parâmetro, uma matriz $_datase tornará a matriz substituindo o que continha anteriormente.
Exemplo:
$_data = array('k1' => 'v1' , 'k2' => 'v2');
chamando $obj->setData('k3','v3')resultados em
$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');
chamando $obj->setData(array('k3'=>'v3'))resultados em
$_data = array('k3'=>'v3');
chamando $obj->setData('k2','v2000')resultados em
$_data = array('k1' => 'v1' , 'k2' => 'v2000')
chamando $obj->setData(array('k2'=>'v2000'))resultados em
$_data = array('k2'=>'v2000');
addData recebe como parâmetro apenas uma matriz e mescla essa matriz com os dados existentes.
Exemplo:
$_data = array('k1' => 'v1' , 'k2' => 'v2');
chamando $obj->addData(array('k3'=>'v3'))resultados em
$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');
mas chamar $obj->addData(array('k2'=>'v2000'))resulta em
$_data = array('k1' => 'v1' , 'k2' => 'v2000');
$obj->setData('k2'=>'v2399393')e não$obj->setData(array('k2'=>'v2000'))
setData ()
é função only set one field value on one call. pode set multiple field value using multiple call of setData function.
A função addData () éset multiple field values using array with array key as field index.
Apenas exemplo:
Você deseja que dois campos sejam definidos no objeto.
Se eu estiver usando setData(), você precisará fazer esse tipo de trabalho.
$ObVarien->setData('fieldA',$X);
$ObVarien->setData('fieldB',$Y);
Mas se eu estiver usando addData(), você pode fazer issoarray key as field name
$Data=array('fieldA'=>$X,'fieldb'=>$Y)
$ObVarien->addData($Data)
addData () e setData () são duas Varien_Objectfunções da classe Library .
addData () usando setData () no arquivo lib para definir o valor do campo usando loop.
public function addData(array $arr)
{
foreach($arr as $index=>$value) {
$this->setData($index, $value);
}
return $this;
}
setDatapara definir mais de um campo com uma chamada.
$obj->setData('k2'=>'v2399393')? :-) (ótimo se você adicionar este ponto específico em sua resposta)