文章彙整

Magento 2 EAV Model 介紹 (1)

By Steffi 6 months agoNo Comments
首頁  /  Magento  /  Magento-2  /  Magento 2 EAV Model 介紹 (1)

上次教學了在Magento 2 的自定義事件, 這次要再加碼介紹Magento 的EAV  ( Entity Attribute Value ) 的系統,在Magento系統中許多東西都是使用 Attribute 所控制,舉凡像是 Catalog ProductCatalog Category 等等,都有 Attribute 可以操作,但是,是什麼樣的原因可以達成這樣彈性強大且靈活的設計,它依靠的是背後的 EAV  ( Entity Attribute Value ) 的系統。今天,我們就來了解一下這強大的功能背後的運作吧!

1.什麼是 EAV

1)在維基百科的定義:

Entity-Attribute-Value model (EAV), also known as object-attribute-value model and open schema is a data model that is used in circumstances where the number of attributes (properties, parameters) that can be used to describe a thing (an “entity” or “object”) is potentially very vast, but the number that will actually apply to a given entity is relatively modest. In mathematics, this model is known as a sparse matrix.

2)Alan Storm 的解釋為:

經過一個正規化應用的資料庫結構

所以,經過以上解釋,我們知道可以 Magento 透過 EAV Model 來存取各種格式的資料,至於資料欄位是如何開設的。我們以 Magento 內建的 catalog_product 為例,對應到的資料表有以下五張,不同形態的 Eav Attribute Value 也會分別存至不同的資料表內:

* catalog_product_entity

* catalog_product_entity_datetime

* catalog_product_entity_int

* catalog_product_entity_decimal

* catalog_product_entity_varchar

2.Entity Type

Entity 是 Magento 內的一種實體物件,在內部程式中則定義為 Entity Type,而 Magento 內建的 Entity Type 有以下幾種,當然也可以自己手動新增,無論是內建的 Entity Type 或是新增進去的都會存在 eav_entity_type 這張資料表內:

 

Entity Type Class
customer Magento\Customer\Model\ResourceModel\Customer
customer_address Magento\Customer\Model\ResourceModel\Address
catalog_category Magento\Catalog\Model\ResourceModel\Category
catalog_product Magento\Catalog\Model\ResourceModel\Product
order Magento\Sales\Model\ResourceModel\Order
invoice Magento\Sales\Model\ResourceModel\Order
creditmemo Magento\Sales\Model\ResourceModel\Order\Creditmemo
shipment Magento\Sales\Model\ResourceModel\Order\Shipment

 

3.Attribute 屬性

Magento 內所有的 Attribute 皆會對應到 Entity Type,舉凡像是 Catalog Product 的 name、sku、price、inventory 或是 Customer 的 firstname、lastname、email 等等,皆是屬於 Attribute 的一種,所有的 Attribute 都會記錄在 eav_attribute 資料表內。

Attribute 新增的時候,可以透過模組 ( Module ) 內的 InstallData 來新增。而他的參數有以下這些,新增的方法我們將會在下一個篇內詳細的介紹。

* group

* type

* backend

* frontend

* label

* input

* class

* source

* global

* visible

* required

* user_defined

* default

* searchable

* filterable

* comparable

* visible_on_front

* used_in_product_listing

* unique

* apply_to

4.Attribute Set 屬性集

Attribute 會存在不同的屬性集 ( Attribute set ) 內,預設都會有 DefaultAttribute Set,而 Attribute set 儲存在 eav_attribute_set 這張資料表內。

想看更多Magento 2 教學導覽,別忘了訂閱我們的電子報,以及追蹤我們的Facebook粉絲專頁,每天固定發文更新,為你補充實用電商知識!

延伸閱讀:

Magento 2 EAV Model 介紹 (2) – 使用程式新增 Attribute
Magento 2 EAV Model 介紹 (3) – 在 Magento 2 使用程式新增 entity type

更多Magento相關文章請看: Magento教學導覽

以上內容由Astralweb 歐斯瑞編寫製作

 000

推薦文章

Category:
  Magento-2

留下回應

你的電子郵件地址不會被公開.

取得獨家電子商務祕技

建立更好的策略靈感

跟上全球的網路趨勢

絕佳的電商解決方案

電子商務戰略全指南

每月發送電商戰略指南,只要填寫E-mail即可訂閱!

請到您的信箱確認,即可完成訂閱。