{"id":16431,"date":"2018-08-07T15:30:35","date_gmt":"2018-08-07T13:30:35","guid":{"rendered":"https:\/\/belvg.com\/blog\/?p=16431"},"modified":"2025-02-11T10:21:25","modified_gmt":"2025-02-11T08:21:25","slug":"how-eav-data-storage-works-in-magento-2-part-4","status":"publish","type":"post","link":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html","title":{"rendered":"How EAV Data Storage Works in Magento 2: Part 4"},"content":{"rendered":"\n<p>An attribute may require additional functionality. In this article, you will&nbsp;learn which customizations can be implemented in Magento 2 and how it&rsquo;s done. Please check out <a href=\"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2.html\" target=\"_blank\" rel=\"noopener\">Part 1<\/a>, <a href=\"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-2.html\" target=\"_blank\" rel=\"noopener\">Part 2<\/a> and <a href=\"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-3.html\" target=\"_blank\" rel=\"noopener\">Part 3<\/a> of the EAV series to catch up on the topic.<\/p>\n<p><!--more--><\/p>\n<h2><strong><span style=\"color: #000000;\">Additional options&nbsp;for saving EAV entities<\/span><\/strong><\/h2>\n<p>Here are the options we&nbsp; have on the EAV Entity editing page:<\/p>\n<ul>\n<li>The default value of the attribute. Allows you to specify the value that will be substituted in the attribute field, if it is empty. This simplifies the procedure of adding and modifying entities. Here are the possible default attribute value types for an item:\n<ul>\n<li>Text Field &mdash; any single-line text<\/li>\n<li>Text Area &mdash; any multiline text<\/li>\n<li>Date &mdash; any date<\/li>\n<li>Yes\/No &mdash; &ldquo;yes&rdquo; or &ldquo;no&rdquo;<\/li>\n<li>Multiple Select &mdash; any number of options<\/li>\n<li>Dropdown &mdash; one option<\/li>\n<li>Price &mdash; no default value<\/li>\n<li>Media image &mdash; no default value<\/li>\n<li>Visual Swatch &mdash; one option<\/li>\n<li>Text Swatch &mdash; one option<\/li>\n<li>Fixed Product Tax &mdash; no default value<\/li>\n<\/ul>\n<\/li>\n<li>Selecting a scope. The scope allows you to specify different attribute values for different websites \/ stores \/ views. Here are the possible values of the scope attribute for an item:\n<ul>\n<li>Text Field &mdash; store view \/ website \/ global<\/li>\n<li>Text Area &mdash; store view \/ website \/ global<\/li>\n<li>Date &mdash; store view \/ website \/ global<\/li>\n<li>Yes\/No&nbsp;&mdash; store view \/ website \/ global<\/li>\n<li>Multiple Select &mdash; store view \/ website \/ global<\/li>\n<li>Dropdown &mdash; store view \/ website \/ global<\/li>\n<li>Price &mdash; website \/ global (&#1085;&#1072;&#1089;&#1090;&#1088;&#1072;&#1080;&#1074;&#1072;&#1077;&#1090;&#1089;&#1103; &#1074; Stores \/ Configuration \/ Catalog \/ Catalog \/ Price \/ Catalog Price Scope)<\/li>\n<li>Media image &mdash; store view \/ website \/ global<\/li>\n<li>Visual Swatch &mdash; store view \/ website \/ global<\/li>\n<li>Text Swatch &mdash; store view \/ website \/ global<\/li>\n<li>Fixed Product Tax &mdash; global<\/li>\n<\/ul>\n<\/li>\n<li>Selecting an attribute set (products only). Allows you to regroup or hide attributes that are not suitable for this type of product.<\/li>\n<\/ul>\n<div class=\"module_in_content_container\"><a href=\"https:\/\/belvg.com\/magento-custom-development\" class=\"link_to_module\" target=\"_blank\" rel=\"noopener\"><\/a><div class=\"module_content\"><img src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2019\/01\/magento-custom-development.png\" width=\"120\" height=\"120\" alt=\"magento custom development\" class=\"module_image\" title=\"How EAV Data Storage Works in Magento 2: Part 4\"><div class=\"module_content_part\"><h3 class=\"title\">Magento Custom Development<\/h3><p class=\"module_content_text\">Take your online store to the next level with BelVG Magento Custom Development <\/p><a href=\"https:\/\/belvg.com\/magento-custom-development\" class=\"link_2_to_module\" target=\"_blank\" style=\"display:inline-block\" rel=\"noopener\"><span class=\"read-more\">Visit the page<\/span><\/a><\/div><\/div><\/div>\n<p>Before saving the EAV entity on the client side, we have the following options:<\/p>\n<ul>\n<li>The prohibition of storing entities if there are blank fields of attributes that have the is_required = 1 property. It lets you specify which entity attributes must be filled in.<\/li>\n<li>Validation of the attribute field values using the algorithm specified in the frontend_class.<\/li>\n<\/ul>\n<p>The following frontend classes are supported by Magento out-of-the-box:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>validate-number: Decimal Number<\/li>\n<li>validate-digits: Integer Number<\/li>\n<li>validate-email: Email<\/li>\n<li>validate-url: URL<\/li>\n<li>validate-alpha: Letters<\/li>\n<li>validate-alphanum: Letters (a-z, A-Z) or Numbers (0-9)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>When saving the EAV entity on the server side, we have the following options:<\/p>\n<ul>\n<li>Checking if the attribute fields with is_required = 1 are filled. Magento checks the required fields on both the client and the server sides.<\/li>\n<li>Checking if the attribute fields with is_required = 1 are unique.<\/li>\n<li>Performing operations in the backend_model:\n<ul>\n<li>Executing validation (validate method). Allows you to implement additional checks on the server before saving.<\/li>\n<li>Performing operations before saving (beforeSave method)<\/li>\n<li>Executing the operation after saving (afterSave method)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"content_sales_info\" style=\"background-image: url(https:\/\/belvg.com\/blog\/wp-content\/uploads\/2019\/03\/Sales_background.png\"><img width=\"65\" height=\"65\" src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2015\/11\/Andrey_Dubina.png\" alt=\"Andrey_Dubina\" title=\"How EAV Data Storage Works in Magento 2: Part 4\"><div class=\"content_part\"><h3 class=\"title\">Partner With Us <\/h3><span class=\"sales_content_text\">Let's discuss how to grow your business. Get a Free Quote.<\/span><\/div> <a class=\"call-to-action\" href=\"https:\/\/belvg.com\/contact?utm_source=blog&amp;utm_campaign=sales_block&amp;utm_content=middle\" target=\"_blank\" rel=\"noopener\">Talk to Andrey<\/a><\/div>\n<p>The module catalog has an additional catalog_eav_attribute table for the attributes in which the following parameters are stored:<\/p>\n<ul>\n<li>Frontend Input Renderer<\/li>\n<li>Is Global<\/li>\n<li>Is Visible<\/li>\n<li>Is Searchable<\/li>\n<li>Is Filterable<\/li>\n<li>Is Comparable<\/li>\n<li>Is Visible On Front<\/li>\n<li>Is HTML Allowed On Front<\/li>\n<li>Is Used For Price Rules<\/li>\n<li>Is Filterable In Search<\/li>\n<li>Is Used In Product Listing<\/li>\n<li>Is Used For Sorting<\/li>\n<li>Is Visible In Advanced Search<\/li>\n<li>Is WYSIWYG Enabled<\/li>\n<li>Is Used For Promo Rules<\/li>\n<li>Is Required In Admin Store<\/li>\n<li>Is Used in Grid<\/li>\n<li>Is Visible in Grid<\/li>\n<li>Is Filterable in Grid<\/li>\n<\/ul>\n<p>These settings allow you to fine-tune the attribute.<\/p>\n<h2><strong><span style=\"color: #000000;\">Creating customizations based on changes to attribute values<\/span><\/strong><\/h2>\n<p>To customize an attribute, you can change the following attribute properties:<\/p>\n<ul>\n<li>backend_model<\/li>\n<li>source_model<\/li>\n<li>attribute_model<\/li>\n<li>frontend_model<\/li>\n<\/ul>\n<h4><strong><span style=\"color: #000000;\">Attribute Model<\/span><\/strong><\/h4>\n<p>Allows the fine-tuning of an attribute. The default model (Magento\\Eav\\Model\\Entity\\Attribute) is predominantly used.<\/p>\n<h4><strong><span style=\"color: #000000;\">Backend Model<\/span><\/strong><\/h4>\n<p>The model is used to process and validate attribute values. Magento\\Eav\\Model\\Entity\\Attribute\\Backend\\DefaultBackend is used by default.<\/p>\n<p>It allows overriding:<\/p>\n<ul>\n<li>validate<\/li>\n<li>afterLoad<\/li>\n<li>beforeSave<\/li>\n<li>afterSave<\/li>\n<li>beforeDelete<\/li>\n<li>afterDelete<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p>Here is an example:<\/p>\n<pre class=\"lang:php decode:true\">class TestBackend extends \\Magento\\Eav\\Model\\Entity\\Attribute\\Backend\\AbstractBackend\r\n{\r\n&nbsp;&nbsp;&nbsp;public function validate($object)\r\n&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp; $attribute_code = $this-&gt;getAttribute()-&gt;getAttributeCode();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$value = $object-&gt;getData($attribute_code);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($value == 'test') {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new \\Magento\\Framework\\Exception\\LocalizedException(__(\"Value can't be test\"));\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;\r\n&nbsp;&nbsp;&nbsp;}\r\n}<\/pre>\n<h4><strong><span style=\"color: #000000;\">Source Model<\/span><\/strong><\/h4>\n<p>The model is used to provide a list of attribute values.<\/p>\n<p>Magento\\Eav\\Model\\Entity\\Attribute\\Source\\Config is used by default.<\/p>\n<p>Example:<\/p>\n<pre class=\"lang:php decode:true\">class TestSource extends \\Magento\\Eav\\Model\\Entity\\Attribute\\Source\\AbstractSource\r\n{\r\n&nbsp;&nbsp;&nbsp;public function getAllOptions()\r\n&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!$this-&gt;_options) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_options = [\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;['label' =&gt; __('Label 1'), 'value' =&gt; 'value 1'],\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;['label' =&gt; __('Label 2'), 'value' =&gt; 'value 2'],\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;['label' =&gt; __('Label 3'), 'value' =&gt; 'value 3'],\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;['label' =&gt; __('Label 4'), 'value' =&gt; 'value 4']\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;_options;\r\n&nbsp;&nbsp;&nbsp;}\r\n}<\/pre>\n<h4><strong><span style=\"color: #000000;\">Frontend Model<\/span><\/strong><\/h4>\n<p>The model is used to display the values in the frontend part of the site.<\/p>\n<p>Magento\\Eav\\Model\\Entity\\Attribute\\Frontend\\DefaultFrontend is used by default.<\/p>\n<p>Example:<\/p>\n<pre class=\"lang:php decode:true\">class TestFrontend extends \\Magento\\Eav\\Model\\Entity\\Attribute\\Frontend\\AbstractFrontend\r\n{\r\n&nbsp;&nbsp;&nbsp;public function getValue(\\Magento\\Framework\\DataObject $object)\r\n&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp; $attribute_code = $this-&gt;getAttribute()-&gt;getAttributeCode();\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$value = $object-&gt;getData($attribute_code);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return nl2br(htmlspecialchars($value));\r\n&nbsp;&nbsp;&nbsp;}\r\n}<\/pre>\n<p>That the final part of point&nbsp;5.1:<em> Demonstrate <\/em>the <em>ability to use EAV model concepts Describe the EAV hierarchy structure<\/em>. We will continue the EAV topic with point 5.2:&nbsp;<em>Demonstrate the ability to use EAV entity load and save Describe the EAV load and save process and differences from the flat table load and save process.<\/em><\/p>\n<div class=\"post-excerpt\">\n<p>Looking for a&nbsp;<a href=\"https:\/\/store.belvg.com\/layered-navigation.html\" target=\"_blank\" rel=\"noopener\">professional Magento development team<\/a>? BelVG is here to help!<\/p>\n<\/div>\n<div class=\"module_in_content_container\"><a href=\"https:\/\/belvg.com\/magento-development\" class=\"link_to_module\" target=\"_blank\" rel=\"noopener\"><\/a><div class=\"module_content\"><img src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/magento-development-services.png\" width=\"481\" height=\"480\" alt=\"magento development services\" class=\"module_image\" title=\"How EAV Data Storage Works in Magento 2: Part 4\"><div class=\"module_content_part\"><h3 class=\"title\">Magento Development Services<\/h3><p class=\"module_content_text\">Take your online store to the next level with BelVG Magento development<\/p><a href=\"https:\/\/belvg.com\/magento-development\" class=\"link_2_to_module\" target=\"_blank\" style=\"display:inline-block\" rel=\"noopener\"><span class=\"read-more\">Visit the page<\/span><\/a><\/div><\/div><\/div>\n\n","protected":false},"excerpt":{"rendered":"EAV data storage in Magento 2. Part 4","protected":false},"author":47,"featured_media":16433,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"image","meta":{"_acf_changed":false,"footnotes":""},"categories":[491,389,524],"tags":[],"class_list":["post-16431","post","type-post","status-publish","format-image","has-post-thumbnail","hentry","category-magento-2","category-magento2-development","category-magento-speed-optimization","post_format-image"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"EAV data storage in Magento 2, part 4. Additional options that we have when saving EAV entities. Creating customizations based on changes to attribute values.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Artsem Miklashevich\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-eav-data-storage-works-in-magento-2-part-4.html#article\",\"name\":\"Working with EAV Data Storage in Magento 2 | BelVG Blog\",\"headline\":\"How EAV Data Storage Works in Magento 2: Part 4\",\"author\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/artsem-miklashevich#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/How-EAV-Data-Storage-Works-in-Magento-2-part-4.jpg\",\"width\":770,\"height\":433,\"caption\":\"How EAV data storage works in Magento 2\"},\"datePublished\":\"2018-08-07T15:30:35+02:00\",\"dateModified\":\"2025-02-11T10:21:25+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-eav-data-storage-works-in-magento-2-part-4.html#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-eav-data-storage-works-in-magento-2-part-4.html#webpage\"},\"articleSection\":\"Magento 2, Magento 2 Development, Magento Speed Optimization, Image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-eav-data-storage-works-in-magento-2-part-4.html#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/belvg.com\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/category\\\/magento2-development#listItem\",\"name\":\"Magento 2 Development\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/category\\\/magento2-development#listItem\",\"position\":2,\"name\":\"Magento 2 Development\",\"item\":\"https:\\\/\\\/belvg.com\\\/blog\\\/category\\\/magento2-development\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-eav-data-storage-works-in-magento-2-part-4.html#listItem\",\"name\":\"How EAV Data Storage Works in Magento 2: Part 4\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-eav-data-storage-works-in-magento-2-part-4.html#listItem\",\"position\":3,\"name\":\"How EAV Data Storage Works in Magento 2: Part 4\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/category\\\/magento2-development#listItem\",\"name\":\"Magento 2 Development\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#organization\",\"name\":\"BelVG Blog\",\"description\":\"Magento and Prestashop articles\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/artsem-miklashevich#author\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/artsem-miklashevich\",\"name\":\"Artsem Miklashevich\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-eav-data-storage-works-in-magento-2-part-4.html#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/145dc6a225439ebb3a257da8fd0f46383a3649cdca2e58190b33a28af5f216a5?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Artsem Miklashevich\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-eav-data-storage-works-in-magento-2-part-4.html#webpage\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-eav-data-storage-works-in-magento-2-part-4.html\",\"name\":\"Working with EAV Data Storage in Magento 2 | BelVG Blog\",\"description\":\"EAV data storage in Magento 2, part 4. Additional options that we have when saving EAV entities. Creating customizations based on changes to attribute values.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-eav-data-storage-works-in-magento-2-part-4.html#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/artsem-miklashevich#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/artsem-miklashevich#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/How-EAV-Data-Storage-Works-in-Magento-2-part-4.jpg\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-eav-data-storage-works-in-magento-2-part-4.html\\\/#mainImage\",\"width\":770,\"height\":433,\"caption\":\"How EAV data storage works in Magento 2\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/how-eav-data-storage-works-in-magento-2-part-4.html#mainImage\"},\"datePublished\":\"2018-08-07T15:30:35+02:00\",\"dateModified\":\"2025-02-11T10:21:25+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/\",\"name\":\"BelVG Blog\",\"description\":\"Magento and Prestashop articles\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Working with EAV Data Storage in Magento 2 | BelVG Blog","description":"EAV data storage in Magento 2, part 4. Additional options that we have when saving EAV entities. Creating customizations based on changes to attribute values.","canonical_url":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html#article","name":"Working with EAV Data Storage in Magento 2 | BelVG Blog","headline":"How EAV Data Storage Works in Magento 2: Part 4","author":{"@id":"https:\/\/belvg.com\/blog\/author\/artsem-miklashevich#author"},"publisher":{"@id":"https:\/\/belvg.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/How-EAV-Data-Storage-Works-in-Magento-2-part-4.jpg","width":770,"height":433,"caption":"How EAV data storage works in Magento 2"},"datePublished":"2018-08-07T15:30:35+02:00","dateModified":"2025-02-11T10:21:25+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html#webpage"},"isPartOf":{"@id":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html#webpage"},"articleSection":"Magento 2, Magento 2 Development, Magento Speed Optimization, Image"},{"@type":"BreadcrumbList","@id":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/belvg.com\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/category\/magento2-development#listItem","name":"Magento 2 Development"}},{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/category\/magento2-development#listItem","position":2,"name":"Magento 2 Development","item":"https:\/\/belvg.com\/blog\/category\/magento2-development","nextItem":{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html#listItem","name":"How EAV Data Storage Works in Magento 2: Part 4"},"previousItem":{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html#listItem","position":3,"name":"How EAV Data Storage Works in Magento 2: Part 4","previousItem":{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/category\/magento2-development#listItem","name":"Magento 2 Development"}}]},{"@type":"Organization","@id":"https:\/\/belvg.com\/blog\/#organization","name":"BelVG Blog","description":"Magento and Prestashop articles","url":"https:\/\/belvg.com\/blog\/"},{"@type":"Person","@id":"https:\/\/belvg.com\/blog\/author\/artsem-miklashevich#author","url":"https:\/\/belvg.com\/blog\/author\/artsem-miklashevich","name":"Artsem Miklashevich","image":{"@type":"ImageObject","@id":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/145dc6a225439ebb3a257da8fd0f46383a3649cdca2e58190b33a28af5f216a5?s=96&d=mm&r=g","width":96,"height":96,"caption":"Artsem Miklashevich"}},{"@type":"WebPage","@id":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html#webpage","url":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html","name":"Working with EAV Data Storage in Magento 2 | BelVG Blog","description":"EAV data storage in Magento 2, part 4. Additional options that we have when saving EAV entities. Creating customizations based on changes to attribute values.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/belvg.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html#breadcrumblist"},"author":{"@id":"https:\/\/belvg.com\/blog\/author\/artsem-miklashevich#author"},"creator":{"@id":"https:\/\/belvg.com\/blog\/author\/artsem-miklashevich#author"},"image":{"@type":"ImageObject","url":"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/08\/How-EAV-Data-Storage-Works-in-Magento-2-part-4.jpg","@id":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html\/#mainImage","width":770,"height":433,"caption":"How EAV data storage works in Magento 2"},"primaryImageOfPage":{"@id":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html#mainImage"},"datePublished":"2018-08-07T15:30:35+02:00","dateModified":"2025-02-11T10:21:25+02:00"},{"@type":"WebSite","@id":"https:\/\/belvg.com\/blog\/#website","url":"https:\/\/belvg.com\/blog\/","name":"BelVG Blog","description":"Magento and Prestashop articles","inLanguage":"en-US","publisher":{"@id":"https:\/\/belvg.com\/blog\/#organization"}}]}},"aioseo_meta_data":{"post_id":"16431","title":"Working with EAV Data Storage in Magento 2 | #site_title","description":"EAV data storage in Magento 2, part 4. Additional options that we have when saving EAV entities. Creating customizations based on changes to attribute values.","keywords":[{"label":"EAV","value":"EAV"},{"label":"magento","value":"magento"},{"label":"customization","value":"customization"},{"label":"data storage","value":"data storage"},{"label":"webstore","value":"webstore"}],"keyphrases":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-11-03 18:37:05","updated":"2026-11-03 18:37:05"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/belvg.com\/blog\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/belvg.com\/blog\/category\/magento2-development\" title=\"Magento 2 Development\">Magento 2 Development<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tHow EAV Data Storage Works in Magento 2: Part 4\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/belvg.com\/blog\/"},{"label":"Magento 2 Development","link":"https:\/\/belvg.com\/blog\/category\/magento2-development"},{"label":"How EAV Data Storage Works in Magento 2: Part 4","link":"https:\/\/belvg.com\/blog\/how-eav-data-storage-works-in-magento-2-part-4.html"}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/posts\/16431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/users\/47"}],"replies":[{"embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/comments?post=16431"}],"version-history":[{"count":0,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/posts\/16431\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/media\/16433"}],"wp:attachment":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/media?parent=16431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/categories?post=16431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/tags?post=16431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}