違いは何だ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')
、その後?: