Tôi đã tự hỏi, cách đúng đắn để thực hiện một mô hình EAV mở rộng là gì.
Tôi thấy rằng trong Magento\Catalog\Model\Product
, phương thức getExtensionAttributes()
được thực hiện như thế này:
public function getExtensionAttributes()
{
$extensionAttributes = $this->_getExtensionAttributes();
if (!$extensionAttributes) {
return $this->extensionAttributesFactory->create('Magento\Catalog\Api\Data\ProductInterface');
}
return $extensionAttributes;
}
Nhưng ở những người khác, như mô hình khách hàng hoặc danh mục, đó chỉ là
public function getExtensionAttributes()
{
return $this->_getExtensionAttributes();
}
điều này có thể dẫn đến kết quả NULL , nếu khóa extension_attribut chưa được đặt trước đó.
Thực tế, tôi thích cái đầu tiên. Bằng cách này, tôi luôn có thể chắc chắn có được một thể hiện Magento\Framework\Api\ExtensionAttributesInterface
, ngay cả khi mô hình vừa được khởi tạo.
Nhưng tại sao nó không được sử dụng trong các mô-đun khác? Có phải nó chống lại sự phân tách mới của các mô hình dữ liệu mà chúng ta thấy trong mô-đun khách hàng không? Nếu vậy, chúng ta phải khởi tạo các thuộc tính mở rộng như thế nào?