違いは何だ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.
ちょうど例:
オブジェクトに2つのフィールドを設定する必要があります。
私が使用している場合、setData()このタイプのworks.needを行う必要があります2つのフィールドでは、setData関数を2回呼び出す必要があります。
$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()は 2つのライブラリです Varien_Objectクラスの関数。
addData()ループを使用して、設定されたフィールド値のためのlibファイルでのsetData()を使用しました。
public function addData(array $arr)
{
foreach($arr as $index=>$value) {
$this->setData($index, $value);
}
return $this;
}
setData一度のコールで複数のフィールドを設定します。
$obj->setData('k2'=>'v2399393')、その後?: