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?

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

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.