Perbedaan Antara setData () dan addData ()

15

Apa perbedaan antara setData()dan addData()? Apakah ada koneksi jika saya memperbarui produk atau membuat yang baru?

pengguna1240207
sumber

Jawaban:

32

setDatamengganti data yang ada dan dapat menerima sebagai parameter baik nilai kunci pasangan maupun array.
jika Anda menetapkan sebagai parameter nilai kunci pasangan kemudian $_data[key]menjadi value. Jika Anda menetapkan sebagai parameter, array $_datamenjadi array yang menimpa apa yang pernah ada sebelumnya.
Contoh:

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

$obj->setData('k3','v3')hasil panggilan dalam

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

$obj->setData(array('k3'=>'v3'))hasil panggilan dalam

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

$obj->setData('k2','v2000')hasil panggilan dalam

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

$obj->setData(array('k2'=>'v2000'))hasil panggilan dalam

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

addData menerima sebagai parameter hanya array dan menggabungkan array itu dengan data yang ada.

Contoh:

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

$obj->addData(array('k3'=>'v3'))hasil panggilan dalam

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

tetapi menelepon $obj->addData(array('k2'=>'v2000'))hasilnya

$_data = array('k1' => 'v1' , 'k2' => 'v2000');
Marius
sumber
apa yang terjadi ketika kita melakukannya $obj->setData('k2'=>'v2399393')? :-) (hebat jika Anda menambahkan poin spesifik ini dalam jawaban Anda)
Rajeev K Tomy
@RajeevKTomy. Selesai
Marius
Maaf saya hanya dapat memberi Anda suara positif sekali :-)
Rajeev K Tomy
pembaruan Anda berbeda. Anda melewatkan permintaan yang ditentukan di atas. Saya bertanya $obj->setData('k2'=>'v2399393')dan tidak$obj->setData(array('k2'=>'v2000'))
Rajeev K Tomy
@RajeevKTomy. Apakah ini lelucon?
Marius
7

setData ()

fungsi adalah only set one field value on one call. itu bisa set multiple field value using multiple call of setData function.

fungsi addData () adalahset multiple field values using array with array key as field index.

Contoh Saja:

Anda ingin dua bidang disetel pada objek.

  • bidang a> Nilai-> X
  • bidang b> Nilai-> Y

Jika saya menggunakan setData()maka Anda perlu melakukan ini jenis works.need Untuk dua bidang Anda perlu memanggil fungsi setData dua bijaksana.

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

Tetapi jika saya menggunakan addData()maka Anda bisa melakukan iniarray key as field name

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

$ObVarien->addData($Data)

addData () dan setData () adalah dua Varien_Objectfungsi kelas Library .

addData () menggunakan setData () di file lib untuk menetapkan nilai bidang menggunakan loop.

public function addData(array $arr)
{
    foreach($arr as $index=>$value) {
        $this->setData($index, $value);
    }
    return $this;
}
Amit Bera
sumber
4
Anda dapat menggunakan setDatauntuk mengatur lebih dari satu bidang dengan satu panggilan.
Marius
@Marius saya telah memeriksa kelas lib. dan Anda menjawab lebih jelas daripada saya
Amit Bera