Diferencia entre setData () y addData ()

15

¿Cuál es la diferencia entre setData()y addData()? ¿Hay alguna conexión si actualizo un producto o configuro uno nuevo?

usuario1240207
fuente

Respuestas:

32

setDataanula los datos existentes y puede recibir como parámetro un par clave-valor o una matriz.
si establece como parámetros, se $_data[key]convierte un par clave-valor value. Si establece como parámetro, una matriz se $_dataconvierte en esa matriz que sobrescribe lo que contenía anteriormente.
Ejemplo:

$_data = array('k1' => 'v1' , 'k2' => 'v2');

llamando a $obj->setData('k3','v3')resultados en

$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');

llamando a $obj->setData(array('k3'=>'v3'))resultados en

$_data = array('k3'=>'v3');

llamando a $obj->setData('k2','v2000')resultados en

$_data = array('k1' => 'v1' , 'k2' => 'v2000')

llamando a $obj->setData(array('k2'=>'v2000'))resultados en

$_data = array('k2'=>'v2000');

addData recibe como parámetro solo una matriz y fusiona esa matriz con los datos existentes.

Ejemplo:

$_data = array('k1' => 'v1' , 'k2' => 'v2');

llamando a $obj->addData(array('k3'=>'v3'))resultados en

$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');

pero llamando $obj->addData(array('k2'=>'v2000'))resultados en

$_data = array('k1' => 'v1' , 'k2' => 'v2000');
Marius
fuente
¿Qué pasa cuando lo hacemos $obj->setData('k2'=>'v2399393')entonces? :-) (excelente si agrega este punto específico en su respuesta)
Rajeev K Tomy
@RajeevKTomy. Hecho.
Marius
Lo siento, puedo votarte solo una vez :-)
Rajeev K Tomy
Su actualización es diferente. Se omitió la solicitud especificada anteriormente. Pregunté $obj->setData('k2'=>'v2399393')y no$obj->setData(array('k2'=>'v2000'))
Rajeev K Tomy
@RajeevKTomy. ¿Esto es una broma?
Marius
7

setData ()

es la función only set one field value on one call. puede set multiple field value using multiple call of setData function.

La función addData () esset multiple field values using array with array key as field index.

Solo ejemplo:

Desea dos campos para establecer en el objeto.

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

Si setData()estoy usando, entonces necesita hacer este tipo de trabajos.necesidad Para dos campos necesita llamar a la función setData de dos maneras.

$ObVarien->setData('fieldA',$X);
$ObVarien->setData('fieldB',$Y);

Pero si estoy usando, addData()entonces puedes hacer estoarray key as field name

$Data=array('fieldA'=>$X,'fieldb'=>$Y)

$ObVarien->addData($Data)

addData () y setData () son dos Varien_Objectfunciones de clase Library .

addData () usando setData () en el archivo lib para establecer el valor del campo usando loop.

public function addData(array $arr)
{
    foreach($arr as $index=>$value) {
        $this->setData($index, $value);
    }
    return $this;
}
Amit Bera
fuente
44
Puede usar setDatapara configurar más de un campo con una llamada.
Marius
@ Mario, tengo que verificar la clase lib. y respondes más claro que yo
Amit Bera