সেটডেটা () এবং অ্যাডডেটা () এর মধ্যে পার্থক্য


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')? :-) (আপনি যদি নিজের উত্তরে এই নির্দিষ্ট পয়েন্টটি যোগ করেন তবে দুর্দান্ত)
রাজীব কে টমি

@RajeevKTomy। সম্পন্ন.
মারিয়াস

দুঃখিত আমি আপনাকে একবারই উত্সাহ দিতে পারি :-)
রাজীব কে টমি

আপনার আপডেট আলাদা। আপনি নির্দিষ্ট অনুরোধ উপরের এড়িয়ে গেছেন। আমি জিজ্ঞাসা করেছি $obj->setData('k2'=>'v2399393')এবং না$obj->setData(array('k2'=>'v2000'))
রাজীব কে টমি

@RajeevKTomy। এই একটা রসিকতা?
মারিয়াস

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.

ঠিক উদাহরণ:

আপনি দুটি ক্ষেত্র অবজেক্টে সেট করতে চান।

  • ক্ষেত্রটি একটি> মান-> এক্স
  • ক্ষেত্র বি> মান-> ওয়

যদি আমি ব্যবহার করি setData()তবে আপনার এই ধরণের ওয়ার্কগুলি করা দরকার two দুটি ক্ষেত্রের জন্য আপনার কল সেটডাটা ফাংশনটি দ্বৈত প্রয়োজন।

$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একটি কল দিয়ে একাধিক ক্ষেত্র সেট করতে ব্যবহার করতে পারেন ।
মারিয়াস

@ মারিয়াস আমি লিব ক্লাস চেক করেছি। এবং আপনি আমাকে আরও স্পষ্ট উত্তর দিন
অমিত বের
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.