ความแตกต่างระหว่าง setData () และ addData ()


15

ความแตกต่างระหว่างsetData()และaddData()คืออะไร มีการเชื่อมต่อหรือไม่หากฉันอัพเดตผลิตภัณฑ์หรือตั้งค่าใหม่

คำตอบ:


32

setDataแทนที่ข้อมูลที่มีอยู่และสามารถรับเป็นพารามิเตอร์ทั้งคู่คีย์ - ค่าอาร์เรย์
ถ้าคุณตั้งค่าเป็นพารามิเตอร์คู่ค่าคีย์แล้วจะกลายเป็น$_data[key] valueหากคุณตั้งค่าเป็นพารามิเตอร์อาร์เรย์$_dataจะกลายเป็นอาร์เรย์นั้นเขียนทับสิ่งที่เคยมีมาก่อนหน้านี้
ตัวอย่าง:

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

$obj->setData('k3','v3')ผลลัพธ์การโทรเข้า

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

$obj->setData(array('k3'=>'v3'))ผลลัพธ์การโทรเข้า

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

$obj->setData('k2','v2000')ผลลัพธ์การโทรเข้า

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

$obj->setData(array('k2'=>'v2000'))ผลลัพธ์การโทรเข้า

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

addData ได้รับเป็นพารามิเตอร์เฉพาะอาร์เรย์และมันผสานอาร์เรย์นั้นกับข้อมูลที่มีอยู่

ตัวอย่าง:

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

$obj->addData(array('k3'=>'v3'))ผลลัพธ์การโทรเข้า

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

แต่การโทรออก$obj->addData(array('k2'=>'v2000'))ผลลัพธ์

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

จะเกิดอะไรขึ้นเมื่อเราทำเช่น$obj->setData('k2'=>'v2399393')นั้น? :-) (ดีถ้าคุณเพิ่มจุดนี้โดยเฉพาะในคำตอบของคุณ)
Rajeev K Tomy

@RajeevKTomy เสร็จสิ้น
Marius

ขออภัยฉันสามารถโหวตคุณได้ครั้งเดียวเท่านั้น :-)
Rajeev K Tomy

การอัปเดตของคุณจะแตกต่างกัน คุณข้ามคำขอที่ระบุด้านบน ฉันถาม$obj->setData('k2'=>'v2399393')และไม่$obj->setData(array('k2'=>'v2000'))
Rajeev K Tomy

@RajeevKTomy นี่เรื่องตลกใช่ไหม?
Marius

7

setData ()

only set one field value on one callฟังก์ชั่น set multiple field value using multiple call of setData functionก็สามารถ

ฟังก์ชัน addData ()คือset multiple field values using array with array key as field index.

เพียงแค่ตัวอย่าง:

คุณต้องการให้ทั้งสองฟิลด์ตั้งค่าที่วัตถุ

  • ฟิลด์ a> Value-> X
  • ฟิลด์ b> ค่า -> Y

หากฉันใช้งานsetData()คุณจะต้องทำงานประเภทนี้ต้องการฟิลด์สองฟิลด์คุณต้องเรียกใช้ฟังก์ชัน setData สองอย่างชาญฉลาด

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

แต่ถ้าฉันใช้addData()คุณก็สามารถทำได้array key as field name

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

$ObVarien->addData($Data)

addData ()และsetData ()เป็นVarien_Objectฟังก์ชันไลบรารีสอง ฟังก์ชัน

addData () ใช้ setData () ที่ไฟล์ lib สำหรับตั้งค่าฟิลด์โดยใช้การวนซ้ำ

public function addData(array $arr)
{
    foreach($arr as $index=>$value) {
        $this->setData($index, $value);
    }
    return $this;
}

4
คุณสามารถใช้setDataเพื่อตั้งค่ามากกว่าหนึ่งช่องด้วยการโทรเพียงครั้งเดียว
Marius

@Marius ฉันได้ตรวจสอบคลาส lib และคุณตอบชัดเจนยิ่งขึ้นแล้วฉัน
Amit Bera
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.