Какая разница между 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')
то? :-) (замечательно, если вы добавите этот конкретный момент в свой ответ)