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:
setData
substitui 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 $_data
se 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_Object
funçõ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;
}
setData
para definir mais de um campo com uma chamada.
$obj->setData('k2'=>'v2399393')
? :-) (ótimo se você adicionar este ponto específico em sua resposta)