Diferença entre setData () e addData ()


15

Qual é a diferença entre setData()e addData()? Existe uma conexão se eu atualizar um produto ou definir um novo?

Respostas:


32

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');

o que acontece quando o fazemos $obj->setData('k2'=>'v2399393')? :-) (ótimo se você adicionar este ponto específico em sua resposta)
Rajeev K Tomy

@RajeevKTomy. Feito.
Marius

Desculpe eu posso upvote você apenas uma vez :-)
Rajeev K Tomy

sua atualização é diferente. Você pulou acima da solicitação especificada. Eu perguntei $obj->setData('k2'=>'v2399393')e não$obj->setData(array('k2'=>'v2000'))
Rajeev K Tomy

@RajeevKTomy. Isso é uma piada?
Marius

7

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.

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

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;
}

4
Você pode usar setDatapara definir mais de um campo com uma chamada.
Marius

@ Marius tenho verificar a classe lib. e você responde mais claro, então, me
Amit Bera
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.