从已加载的 Magento 模型中检索附加数据

2023-12-27

在某些情况下,我收到的模型仅包含我需要的一些数据,例如catalog/product不包含我可能需要使用的某些属性的实例,例如尺寸、小部件数量或腰围尺寸。

为了缓解这个问题,我目前的选择是:

  • 创建一个新块,并使用手动加载所需的属性addAttributeToSelect($name).
  • 使用当前填充不足的模型中的 ID 将整个模型加载到模板中,例如,Mage::getModel('catalog/product')->getId($product->getId()).

对于我的问题:有没有一种方法可以选择我想要在模型集合中加载的其他属性->load()已被调用?另外,有没有一种方法可以在个别模型上执行此操作?


问题中描述了正确且最安全的方法(但不是最好的 - 见下文) - 再次加载产品。

目前还没有开发出在产品加载后添加更多属性的方法,原因如下:

1)在模型生命周期内,许多值都会被计算并缓存在模型内。因此,添加更多属性(例如价格)将改变模型的状态,但不会影响多个方法的结果,这些方法旨在返回这些属性值(例如 getPrice()),但在内部进行一些额外的预处理并依赖于先前计算的值数据。

2) 模型的状态将不一致,因为某些方法将返回根据先前的空属性计算的缓存且当前无效的值,而其他一些方法将返回非缓存值。因此,此类模型的使用将是不安全的,并且其属性将是不可预测的。

3)支持这种重新加载的代码复杂性相当大。

解决方案

1)第一个好的解决方案(尽管是最重的一个)是每次您的块/模型/助手需要其中的扩展属性集时再次加载产品。

2)更好的解决方案 - 是加载新的集合,其中所有产品都具有所有附加属性,无论何时您看到这些属性都是必需的,而原始集合没有它们。

3) 最好的解决方案 - 是加载具有所有必需属性的原始产品集合。有时,集合确实会加载具有可能属性子集的产品 - 主要是 EAV 优化的遗留代码(现在默认情况下“打开”平面表,并且不需要此优化)或者可能当集合由搜索引擎加载时(例如 Solr)在 Magento EE 中),默认情况下,它不会在其记录中存储所有属性。

3.1)您可以将所需的属性添加到实例化位置的原始集合中 - 通过有问题中提到的addAttributeToSelect($attributeNames) method

3.2) 您可以将属性添加到属性列表中,属性列表会自动填充到集合中。属性列表因模块而异,并且存储在不同的位置。有些在配置中,有些在数据库中。具体位置(配置或数据库表),在哪里添加自动填充属性,取决于您的具体情况。

4)有时,当您只需要属性值时,编写资源模型可能会更容易和更快,这将直接从数据库加载它们productIds和当前的storeId范围。然后,您可以冒险将它们设置为集合中产品的属性,或者安全地将它们设置为产品myAdditionalAttribuesValuesArray属性或用作独立数组,映射到产品 ID。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从已加载的 Magento 模型中检索附加数据 的相关文章

  • 为什么在网关取消的订单状态没有转换为“ payment_pending ”?

    我正在使用 Magento 社区 ver1 6 1 0 我在 Magento wiki 上找到了这个状态图http www magentocommerce com wiki 2 magento concepts and architectu
  • Magento 2 REST API 客户自定义属性

    Magento 2 REST API 文档解释了在更新或创建客户时设置custom attributes 的方法 http devdocs magento com swagger index 20 html http devdocs mag
  • isSaleable() 和 isAvailable() 有什么区别?

    我正在我的 Magento 主题的 单个 产品页面上显示库存可用性 但有些事情我并不完全理解 我看到模板中使用了两种方法来检查产品是否可供销售 Mage Catalog Model Product isAvailable Mage Cata
  • Magento:我可以在哪个文件夹中看到我安装的扩展?

    我在 magento 1 5 中安装了一个扩展 只是想知道它在我的服务器上的位置 因为我想向它写入一个包含文件 谢谢 通常在 MagentoFolder app code community SomeCompanyName SomePack
  • Magento:设置刚刚创建的网站的配置值?

    我正在以编程方式创建网站 用户等 问题是 创建网站时 我无法立即设置配置值 Code
  • 在 Magento 中获取购物车详细信息

    我想通过使用 Magento 获取购物车详细信息getQuote功能 我怎样才能做到这一点 cart Mage getModel checkout cart gt getQuote 当我打印 cart页面停止执行并显示空白页面 但是当我写的
  • Magento --“SQLSTATE[23000]:违反完整性约束..”客户更新

    迁移服务器后 每次尝试更新客户信息时都会出现错误 我正在使用一个客户激活插件 http www magentocommerce com magento connect vinai extension 489 customer activat
  • 使用按钮添加自定义折扣订单总计

    我的模块带有自定义折扣 没问题 配置 xml
  • 使用magento中SOAP API的salesOrderInfo获取简单的产品sku和数量

    我在以下代码中添加了 app code core Mage Sales Model Order Api php File public function info orderIncrementId order Mage getModel s
  • Wamp 和 Magento 出现 500 内部服务器错误

    我被困在访问安装页面 似乎无法让它工作 它总是给我一个 500 Internal Server Error 错误 我研究了一些类似的问题解决方案 但它们不起作用 您在帖子评论中给出的错误应该会在经过一些搜索后引导您找到解决方案 问题是 Ma
  • 无法重新索引 magento 1.7.0.2 卡在“处理”上

    我的 magento 索引中有九分之七停留在 处理 状态 我需要重新索引它们才能正确显示我的网站 我通过 ftp 访问我的 var locks 并删除其中的两个文件 但是当我刷新索引页时 它们只是重新出现 index process 3 l
  • 鼠标悬停缩放在 magento 中不起作用

    我想在我的 magento 网站上安装 jquery 缩放框 我几乎尝试了互联网上找到的所有东西 难道我做错了什么 但我看不到让 jquery 鼠标悬停在我的 magento 网站上进行缩放 我也在我的 jquery 文件中放入了 jque
  • Magento 外部登录不会创建会话 cookie

    我正在尝试从外部站点替换 Magento 的相当笨拙的 ajax 登录 该网站使用 Magento 作为商店 站点和 magento 商店都有自己的登录信息 因此当用户登录时 两者同步非常重要 这是通过每次页面重新加载时进行 ajax 调用
  • Magento:查找包含产品的订单

    Magento 有没有办法找到包含给定产品的所有订单 如果可以通过管理面板来完成就更好了 报告 gt 产品 gt 订购的产品向我提供了产品销售的日期以及包含该产品的订单数量 但我需要知道哪些特定订单包含该产品 谢谢你 这个问题我在另一个问题
  • 多个商店和多个具有不同角色的管理员

    我毫不怀疑magento可以处理多个商店 但我想知道每个商店是否可以处理这样的特定用户 其中他们可以像管理员一样访问他们的目录 销售 库存等 但仅限于他们的特定商店 这是我的示例表示 Magento website gt Store Cat
  • 添加或删除带有原型的类

    无法计算用于添加或删除基于单击函数的 img 元素 选定 的 css 类名 选定 的 PROTOTYPE 脚本 已为 Jquery 完成 但它必须在 Prototype 中 这让我发疯 无法使其适用于原型 我的原始代码是 Magento 商
  • 如何获取捆绑选项选择 SKU?

  • Magento SOAP V2 API - 附加属性设置为空

    几个小时以来 我一直在尝试通过 SOAP V2 API 创建具有附加属性的产品 每当我打电话时就会添加该产品目录产品创建但我随请求发送的附加属性被设置为空 每当我不添加附加属性时 这两个属性都会设置为其默认值 因此我认为这些属性正在发送和接
  • 如何验证magento中的单选按钮?

    在我的自定义模块中 我有一个带有单选按钮的表单 当我单击提交按钮时 它不会验证单选按钮 如何使用 Magento 默认验证类进行验证 Thanks 我得到了答案 use validate one required by name在单选按钮的
  • 如何使用模块在magento admin中创建子菜单

    我正在开发 magento 模块 我想在管理部分添加菜单 like 管理 gt 目录 gt 属性 gt 管理属性 gt 这里是我的菜单 Magento 版本 1 5 1 0 我怎样才能做到这一点 在你的模块中adminhtml xml输入以

随机推荐