Яка різниця між 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()
вам потрібно виконати цей тип works.need Для двох полів вам потрібна функція 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')
тоді? :-) (чудово, якщо ви додасте цей конкретний пункт у своїй відповіді)