Questions tagged «eav»

有关Magento的实体属性值(EAV)实现的问题

1
为什么对EAV和标签没有部分重新索引?
这个问题困扰了我一段时间。 为什么在Magento 1.13.xx中引入的改进错误修复程序称为部分重新索引,却没有涵盖“产品属性”和“标签聚合数据”索引器?为什么这两个必须手动重新索引? 在我看来,EAV指数是最关键的指标之一。没有部分重新索引意味着在每次销售(有些人拥有)之后,索引将失效,这意味着分层导航不再有效,这将导致数据显示不一致和销售损失。 我是否缺少明显的东西? 更新: 因此,这里是此bug的描述。一旦完成销售并且产品缺货,分层导航将仅针对简单产品而不是可配置产品(未测试捆绑和分组)反映产品属性的更改。 因此,假设您的目录中有一个可配置的产品(如T恤)有不同的尺寸,并且“尺寸”属性为“可过滤(带有结果)”。然后,在相应类别或搜索结果的分层导航中,您将看到尺寸部分,其中列出了所有可用尺寸。如果完成其中一项销售后,某个尺寸的商品缺货,您可能会希望它从分层导航中消失。除非刷新属性索引和刷新块缓存,否则不会发生这种情况。 这个错误真的很关键。这是两种威胁。首先,最终客户在分层导航中看到自己的尺寸,然后发现实际上不可用,这会让您的商店感到沮丧。更糟糕的是,一旦产品重新入库,在分层导航中就不会显示出来,因此最终客户将无法购买。因此,很难低估收入损失的数额。

6
如何创建EAV实体?
如何创建EAV实体? 这是一个在网络上经常出现的问题。有一些很好的博客文章解释了如何做到这一点,但是没有一篇令我满意。 因此,我决定回答一个自我回答的问题,并解释我的操作方法……它似乎有效。 这里有很多代码。为了正确阅读,请按“最旧的”排序答案。
35 admin  module  eav 


2
Magento每个新发票的递增ID递增5?
我需要将每个新的发票编号增加5,我已经尝试过以下代码。 但是更改了所有发票,装运,订单和贷项凭证。 我需要将每个新的发票编号增加5,发货增加5,并将贷项凭单增加3。 销售订单也增加1(正常)。 我怎样才能做到这一点 。? 任何人都可以帮助我。 class Mage_Eav_Model_Entity_Increment_Numeric extends Mage_Eav_Model_Entity_Increment_Abstract { public function getNextId() { $last = $this->getLastId(); if (strpos($last, $this->getPrefix()) === 0) { $last = (int)substr($last, strlen($this->getPrefix())); } else { $last = (int)$last; } $next = $last + 5; return $this->format($next); } }

3
“ eav_”表的目的
我一直想知道表的含义是什么: eav_entity eav_entity_datetime eav_entity_decimal eav_entity_int eav_entity_store eav_entity_text 他们总是空的。它们是在1.6之前的版本中创建的,app/code/core/Mage/Eav/sql/eav_setup/mysql4-install-0.7.0.php后来又被带到版本1.6+ 的安装脚本中,/app/code/core/Mage/Eav/sql/eav_setup/install-1.6.0.0.php 我看到有一个资源模型链接到其中一个表Mage_Eav_Model_Resource_Entity_Store(也许还有其他表),但是/没有发生任何变化。 这些表有什么用吗?或者这是其他已启动但尚未实现的“功能”,例如布局版本或管理面包屑。
19 database  eav 

3
更改签出步骤时,属性在类Magento \ Quote \ Api \ Data \ AddressInterface中没有相应的setter
1-我将eav属性添加到customer_address $attributesInfo = [ 'reference' => [ 'label' => 'Reference', 'type' => 'varchar', 'input' => 'text', 'position' => 100, 'visible' => true, 'required' => false, ], ]; foreach ($attributesInfo as $attributeCode => $attributeParams) { $customerSetup->addAttribute('customer_address', $attributeCode, $attributeParams); } 2-我在模块中添加了extension属性 <extension_attributes for="Magento\Quote\Api\Data\AddressInterface"> <attribute code="reference" type="string"/> </extension_attributes> 在我的requirejs-config.js中,我覆盖了一些JavaScript文件以添加参考字段 var config = { …

2
如何获得具有“属性值”(option_id)的属性“选项标签/属性文本”?
假设我有一个属性,它是选项的集合(下拉列表/多重选择)。 我可以检索给定产品的属性值: $store_id = [something]; $productId = [something]; // this is a select/multiselect $attribute_code = [something]; $option_id = Mage::getResourceModel('catalog/product')->getAttributeRawValue($productId, $attribute_code, $store_id ); $option_label = ??? 现在,我得到了属性option_id,它是一个数值... ...加载我的属性值的前端属性标签的最佳方法是什么?(不加载完整产品) 解决方案感谢Marius: // Not loading the product - just creating a simple instance $product = Mage::getModel('catalog/product') ->setStoreId($store_id) ->setData($attribute_code,$option_id); $option_label = $product->getAttributeText($attribute_code);

6
Magento 2-如何获取eav实体的属性选项值?
如何获取eav实体的属性选项值? 我发现仅针对magento 1.x的解决方案,但我不知道M2。 M1: $attr = Mage::getResourceModel('eav/entity_attribute_collection')->setCodeFilter('specialty')->getData()[0]; $attributeModel = Mage::getModel('eav/entity_attribute')->load($attr['attribute_id']); $src = $attributeModel->getSource()->getAllOptions(); 有人知道,请一步一步给我看!谢谢!
18 magento2  database  eav 

3
Magento 2:平板餐桌还可以吗?
在Magento 2中,我们仍然需要担心餐桌吗?我知道有一个可以打开平板的UI,但是我不确定它们是否经过了良好的测试,甚至不确定是否需要它们。 如果平表都还是一件事-在那里/时做平表的属性获取生成和/或再生。这仅在重新编制索引时发生吗?还是其他UI操作可以触发平面表生成?它发生在php bin/magento setup:di:compile吗?其他地方? 另外-Magento如何确定是否需要将属性设为扁平属性?所有 EAV属性是否都变平了?还是有其他可能不是?

3
Magento 2:%_ entity表中的row_id和entity_id有什么区别?
在Magento 1中,row_id实体表中没有任何列,而您只有entity_id: CREATE TABLE `catalog_category_entity` ( `entity_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Entity ID', `entity_type_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Entity Type ID', `attribute_set_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Attriute Set ID', `parent_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Parent Category ID', `created_at` timestamp …
17 magento2  database  eav 

3
实现getExtensionAttributes()的正确方法
我想知道,实现可扩展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(); } 如果以前未设置extension_attributes键,则可能导致结果为NULL。 务实的是,我希望第一个。这样Magento\Framework\Api\ExtensionAttributesInterface,即使模型刚刚实例化,我也始终可以确保获得的实例。 但是,为什么在其他模块中不使用它呢?是否与我们在客户模块中看到的新的数据模型分离背道而驰?如果是这样,我们应该如何初始化扩展属性?

1
当我们查看eavSetup时,哪些值可用于类型和输入?
为Magento 2创建安装脚本时,哪些类型的值可用于类型和输入部分eavSetup->addAttribute()?或者我可以在哪里找到答案? $eavSetup->addAttribute( \Magento\Catalog\Model\Product::ENTITY, 'some_attr', [ 'type' => '', 'backend' => '', 'frontend' => '', 'label' => 'Test Attribute', 'input' => '', 'class' => '', 'source' => '', 'global' => \Magento\Catalog\Model\Resource\Eav\Attribute::SCOPE_GLOBAL, 'visible' => true, 'required' => false, 'user_defined' => false, 'default' => 0, 'searchable' => false, 'filterable' => false, 'comparable' …


1
EAV模型的_data
我了解到,简单模型(例如cataloginventory/stock_item)的_data是字段值对的数组,它对应于数据库表的字段。我很想知道EAV模型的_data内容,所以我检查了catalog/product使用debug()函数的_data 。 发现是它包含的字段值对catalog_product_entity,以及该实体的某些属性。他们对我来说很有意义。我不明白的是,它也包含一对: ... [stock_item (Mage_CatalogInventory_Model_Stock_Item)] => Array ( [item_id] => 1 [product_id] => 1 [stock_id] ...... ) ... ,这是的实例cataloginventory/stock_item。这既不是目录/产品实体的属性,也不是中的字段catalog_product_entity,为什么要包含它? EAV模型是否有_data的约定?
9 product  catalog  eav 

4
为什么属性代码具有最大长度?
尝试创建属性时,我发现属性代码的最大长度为30个字符。事实证明,这实际上并不是某种真正的限制-它是一个完全任意的值,由 Mage_Eav_Model_Entity_Attribute::ATTRIBUTE_CODE_MAX_LENGTH. 因此,既然如此,为什么会有限制呢?以及为什么默认值为30,而不是实例255(数据库列的实际限制)? PS。如果有人可以为这个问题想到更好的标签,请更新它们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.