Sự khác biệt giữa setData () và addData ()


15

Sự khác biệt giữa setData()và là addData()gì? Có kết nối nào nếu tôi cập nhật sản phẩm hoặc đặt sản phẩm mới không?

Câu trả lời:


32

setDataghi đè dữ liệu hiện có và có thể nhận dưới dạng tham số hoặc cặp giá trị khóa hoặc là một mảng.
nếu bạn đặt làm tham số, một cặp khóa-giá trị $_data[key]sẽ trở thành value. Nếu bạn đặt làm tham số, một mảng $_datasẽ trở thành mảng đó ghi đè lên những gì nó chứa trước đó.
Thí dụ:

$_data = array('k1' => 'v1' , 'k2' => 'v2');

$obj->setData('k3','v3')kết quả cuộc gọi trong

$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');

$obj->setData(array('k3'=>'v3'))kết quả cuộc gọi trong

$_data = array('k3'=>'v3');

$obj->setData('k2','v2000')kết quả cuộc gọi trong

$_data = array('k1' => 'v1' , 'k2' => 'v2000')

$obj->setData(array('k2'=>'v2000'))kết quả cuộc gọi trong

$_data = array('k2'=>'v2000');

addData chỉ nhận tham số là một mảng và nó hợp nhất mảng đó với dữ liệu hiện có.

Thí dụ:

$_data = array('k1' => 'v1' , 'k2' => 'v2');

$obj->addData(array('k3'=>'v3'))kết quả cuộc gọi trong

$_data = array('k1' => 'v1' , 'k2' => 'v2', 'k3'=>'v3');

nhưng gọi $obj->addData(array('k2'=>'v2000'))kết quả trong

$_data = array('k1' => 'v1' , 'k2' => 'v2000');

Điều gì xảy ra khi chúng ta làm $obj->setData('k2'=>'v2399393')sau đó? :-) (thật tuyệt nếu bạn thêm điểm cụ thể này vào câu trả lời của bạn)
Rajeev K Tomy

@RajeevKTomy. Làm xong.
Marius

Xin lỗi tôi chỉ có thể nâng cấp bạn một lần :-)
Rajeev K Tomy

cập nhật của bạn là khác nhau. Bạn đã bỏ qua yêu cầu được chỉ định ở trên. Tôi đã hỏi $obj->setData('k2'=>'v2399393')và không$obj->setData(array('k2'=>'v2000'))
Rajeev K Tomy

@RajeevKTomy. Đây co phải la một tro đua?
Marius

7

setData ()

chức năng là only set one field value on one call. nó có thể set multiple field value using multiple call of setData function.

Hàm addData ()set multiple field values using array with array key as field index.

Ví dụ:

Bạn muốn hai trường để đặt tại đối tượng.

  • trường a> Giá trị-> X
  • trường b> Giá trị-> Y

Nếu tôi sử dụng setData()thì bạn cần phải thực hiện loại công việc này. Cần hai trường bạn cần gọi hàm setData hai khôn ngoan.

$ObVarien->setData('fieldA',$X);
$ObVarien->setData('fieldB',$Y);

Nhưng nếu tôi sử dụng addData()thì bạn có thể làm điều nàyarray key as field name

$Data=array('fieldA'=>$X,'fieldb'=>$Y)

$ObVarien->addData($Data)

addData ()setData () là hai Varien_Objecthàm lớp Thư viện .

addData () sử dụng setData () tại tệp lib để đặt giá trị trường bằng vòng lặp.

public function addData(array $arr)
{
    foreach($arr as $index=>$value) {
        $this->setData($index, $value);
    }
    return $this;
}

4
Bạn có thể sử dụng setDatađể đặt nhiều trường với một cuộc gọi.
Marius

@Marius tôi đã kiểm tra lớp lib. và bạn trả lời rõ ràng hơn sau đó tôi
Amit Bera
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.