ความแตกต่างระหว่างsetData()
และaddData()
คืออะไร มีการเชื่อมต่อหรือไม่หากฉันอัพเดตผลิตภัณฑ์หรือตั้งค่าใหม่
ความแตกต่างระหว่างsetData()
และaddData()
คืออะไร มีการเชื่อมต่อหรือไม่หากฉันอัพเดตผลิตภัณฑ์หรือตั้งค่าใหม่
คำตอบ:
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')
และไม่$obj->setData(array('k2'=>'v2000'))
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.
เพียงแค่ตัวอย่าง:
คุณต้องการให้ทั้งสองฟิลด์ตั้งค่าที่วัตถุ
หากฉันใช้งาน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;
}
setData
เพื่อตั้งค่ามากกว่าหนึ่งช่องด้วยการโทรเพียงครั้งเดียว
$obj->setData('k2'=>'v2399393')
นั้น? :-) (ดีถ้าคุณเพิ่มจุดนี้โดยเฉพาะในคำตอบของคุณ)