Có hai phương pháp lấy dữ liệu mô hình.
$model->getData();
$model->getOrigData();
Bất cứ ai có thể giải thích sự khác biệt giữa chúng là gì? Bất kỳ trợ giúp sẽ được đánh giá cao.
Có hai phương pháp lấy dữ liệu mô hình.
$model->getData();
$model->getOrigData();
Bất cứ ai có thể giải thích sự khác biệt giữa chúng là gì? Bất kỳ trợ giúp sẽ được đánh giá cao.
Câu trả lời:
getOrigData()
trả về dữ liệu trong đối tượng tại thời điểm nó được khởi tạo / điền.
Sau khi mô hình được khởi tạo, bạn có thể cập nhật dữ liệu đó và getData()
sẽ trả về những gì bạn hiện có trong đối tượng đó.
Hãy nhìn vào Varien_Object
( getOrigData
, setOrigData
), grep -R "origData" app/
để bạn có thể xem những gì được sử dụng.
Trong EE, rất hữu ích để ghi lại mô-đun đã thay đổi ( Enterprise_Logging ).
Điều này được giải thích dễ dàng nhất bằng một ví dụ:
$product = Mage::getModel('catalog/product')->load(123);
$product->getData('something'); // returns "foo"
$product->setData('something', 'bar');
$product->getData('something'); // returns "bar"
$product->getOrigData('something'); // returns "foo"
Tóm lại, mọi mô hình (một khi được tải) sẽ tạo một bản sao của dữ liệu được tải ban đầu và lưu trữ nó trong thuộc Model_Class::_origData
tính. Điều này cho phép thực hiện tối ưu hóa các _beforeSave
cuộc gọi để các truy vấn chỉ sửa đổi dữ liệu đã thay đổi và không phải viết lại cùng một dữ liệu mọi lúc.
Ngoài ra, bất cứ khi nào bạn gọi setData()
một cờ được đặt là mô hình đã thay đổi dữ liệu. Bạn có thể kiểm tra xem một mô hình đã thay đổi dữ liệu bằng cách gọi $model->hasDataChanges()
.