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

짤방 백업 봇 끝난.
Marius

죄송합니다. 한 번만 귀하를 찬성 할 수 있습니다 :-)
Rajeev K Tomy

업데이트가 다릅니다. 지정된 요청을 건너 뛰었습니다. 내가 물었다 $obj->setData('k2'=>'v2399393')하지$obj->setData(array('k2'=>'v2000'))
라지브 K 다카라 토미에게

짤방 백업 봇 지금 농담하는 거지?
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> 값-> 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클래스 함수입니다.

루프를 사용하여 필드 값을 설정하기 위해 lib 파일에서 setData ()를 사용하는 addData ()

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.