Magento 产品属性获取值
如果我知道产品ID而不加载整个产品,如何获取特定的产品属性值?
How to get specific product attribute value if i know product ID without loading whole product?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
我知道的一种方式:
A way that I know of:
你可以使用
you can use
请参阅 Daniel Kocherga 的答案,因为它在大多数情况下都适合您。
除了获取属性值的方法之外,您有时可能还需要获取
select
或multiselect
的标签。在这种情况下,我创建了这个方法,并将其存储在辅助类中:Please see Daniel Kocherga's answer, as it'll work for you in most cases.
In addition to that method to get the attribute's value, you may sometimes want to get the label of a
select
ormultiselect
. In that case, I have created this method which I store in a helper class:如果不加载产品模型,似乎不可能获得价值。如果您查看文件 app/code/core/Mage/Eav/Model/Entity/Attribute/Frontend/Abstract.php 您将看到该方法
如您所见,该方法需要加载对象才能从中获取数据(第三个线)。
It seems impossible to get value without loading product model. If you take a look at file app/code/core/Mage/Eav/Model/Entity/Attribute/Frontend/Abstract.php you'll see the method
As you can see this method requires loaded object to get data from it (3rd line).
首先我们必须确保所需的属性已加载,然后将其输出。使用这个:
First we must ensure that the desired attribute is loaded, and then output it. Use this:
试试这个
Try this
您不必加载整个产品。
Magentos 系列非常强大且智能。
当您调用 getFirstItem() 时,将执行查询并且结果乘积非常小:
You don't have to load the whole product.
Magentos collections are very powerful and smart.
At the moment you call getFirstItem() the query will be executed and the result product is very minimal:
这个有效——
This one works-
您可以通过以下方式获取属性值
You can get attribute value by following way
我想你可以编写一个直接通过 sql 执行此操作的方法。
看起来像这样:
变量:
查询:
您必须根据属性的 backend_type(eav_attribute 中的字段)从正确的表中获取值,因此至少需要 1 个额外的查询。
You could write a method that would do it directly via sql I suppose.
Would look something like this:
Variables:
Query:
You would have to get the value from the correct table based on the attribute's backend_type (field in eav_attribute) though so it takes at least 1 additional query.
如果您有一个名为 my_attr 的文本/文本区域属性,您可以通过以下方式获取它:
产品->getMyAttr();
If you have an text/textarea attribute named my_attr you can get it by:
product->getMyAttr();