ฉันสงสัยว่าอะไรคือวิธีที่เหมาะสมในการนำโมเดล EAV ที่ขยายได้
ฉันเห็นว่าในMagento\Catalog\Model\Product
วิธีการgetExtensionAttributes()
ใช้งานเช่นนี้
public function getExtensionAttributes()
{
$extensionAttributes = $this->_getExtensionAttributes();
if (!$extensionAttributes) {
return $this->extensionAttributesFactory->create('Magento\Catalog\Api\Data\ProductInterface');
}
return $extensionAttributes;
}
แต่สำหรับคนอื่น ๆ เช่นลูกค้าหรือรุ่นหมวดหมู่มันเป็นเพียงแค่
public function getExtensionAttributes()
{
return $this->_getExtensionAttributes();
}
ซึ่งสามารถนำไปสู่ผลลัพธ์NULLถ้าคีย์extension_attributesไม่ได้ตั้งค่าก่อน
ในทางปฏิบัติฉันต้องการคนแรก วิธีนี้ทำให้ฉันมั่นใจได้เสมอว่าจะได้รับอินสแตนซ์Magento\Framework\Api\ExtensionAttributesInterface
แม้ว่าตัวแบบนั้นเพิ่งจะถูกทำให้เป็นตัวอย่าง
แต่ทำไมมันไม่ใช้ในโมดูลอื่นแล้ว? เป็นการแยกแบบจำลองข้อมูลใหม่ที่เราเห็นในโมดูลลูกค้าหรือไม่ ถ้าเป็นเช่นนั้นเราควรจะเริ่มต้นคุณลักษณะส่วนขยายได้อย่างไร