Saya bertanya-tanya, apa cara yang tepat untuk menerapkan model EAV yang dapat dikembangkan.
Saya melihat bahwa dalam Magento\Catalog\Model\Product
, metode getExtensionAttributes()
diimplementasikan seperti ini:
public function getExtensionAttributes()
{
$extensionAttributes = $this->_getExtensionAttributes();
if (!$extensionAttributes) {
return $this->extensionAttributesFactory->create('Magento\Catalog\Api\Data\ProductInterface');
}
return $extensionAttributes;
}
Tetapi pada orang lain, seperti model pelanggan atau kategori itu saja
public function getExtensionAttributes()
{
return $this->_getExtensionAttributes();
}
yang dapat menyebabkan hasil NULL , jika kunci extension_attributes belum ditetapkan sebelumnya.
Secara pragmatis, saya lebih suka yang pertama. Dengan cara ini saya selalu bisa memastikan untuk mendapatkan contoh Magento\Framework\Api\ExtensionAttributesInterface
, bahkan jika model baru saja dipakai.
Tapi mengapa itu tidak digunakan dalam modul lain? Apakah itu bertentangan dengan pemisahan baru model data yang kita lihat dalam modul pelanggan? Jika demikian, bagaimana kita menginisialisasi atribut ekstensi?
sumber
$order->getExtensionAttributes()
dan diselesaikan setelah mendapatkan pesanan sebagai berikut:$order = $this->orderRepositoryInterface->get($order->getId());
. Antarmuka urutan penyimpanan adalahMagento\Sales\Api\OrderRepositoryInterface
. Tidak yakin apakah masalah Anda samaKode ini digunakan dengan cara berbeda di berbagai ekstensi. Fungsionalitas digunakan untuk mengikat atribut apa pun di antarmuka itu. Untuk pemahaman yang lebih baik tentang ini, lihat tautan ini: http://oyenetwork.com/articles/magento2-devliery-date-module-creation-from-scratch/
sumber
getExtensionAttributes()
entitas kustom