Magento - 检索具有特定属性值的产品

2023-11-24

在我的块代码中,我尝试以编程方式检索具有特定值属性的产品列表。

或者,如果不可能,如何检索所有产品,然后过滤它们以仅列出具有特定属性的产品?

如何使用标准布尔过滤器执行搜索AND or OR匹配我的产品的子集?


几乎所有 Magento 模型都有一个相应的 Collection 对象,可用于获取模型的多个实例。

要实例化 Product 集合,请执行以下操作

$collection = Mage::getModel('catalog/product')->getCollection();

产品是 Magento EAV 样式模型,因此您需要添加要返回的任何其他属性。

$collection = Mage::getModel('catalog/product')->getCollection();

//fetch name and orig_price into data
$collection->addAttributeToSelect('name');  
$collection->addAttributeToSelect('orig_price');    

有多种语法可用于在集合上设置过滤器。我总是使用下面的详细方法,但您可能需要检查 Magento 源代码以了解可以使用过滤方法的其他方式。

下面展示了如何按值范围(大于和小于)进行过滤

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('name');  
$collection->addAttributeToSelect('orig_price');    

//filter for products whose orig_price is greater than (gt) 100
$collection->addFieldToFilter(array(
    array('attribute'=>'orig_price','gt'=>'100'),
)); 

//AND filter for products whose orig_price is less than (lt) 130
$collection->addFieldToFilter(array(
    array('attribute'=>'orig_price','lt'=>'130'),
));

虽然这将按等于一件事或另一件事的名称进行过滤。

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('name');  
$collection->addAttributeToSelect('orig_price');    

//filter for products who name is equal (eq) to Widget A, or equal (eq) to Widget B
$collection->addFieldToFilter(array(
    array('attribute'=>'name','eq'=>'Widget A'),
    array('attribute'=>'name','eq'=>'Widget B'),        
));

支持的短条件(eq、lt 等)的完整列表可以在_getConditionSql中的方法lib/Varien/Data/Collection/Db.php

最后,所有 Magento 集合都可以迭代(基集合类实现迭代器接口)。设置过滤器后,您将通过这种方式获取产品。

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('name');  
$collection->addAttributeToSelect('orig_price');    

//filter for products who name is equal (eq) to Widget A, or equal (eq) to Widget B
$collection->addFieldToFilter(array(
    array('attribute'=>'name','eq'=>'Widget A'),
    array('attribute'=>'name','eq'=>'Widget B'),        
));

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

Magento - 检索具有特定属性值的产品 的相关文章

  • PHP 文件服务脚本:下载不可靠?

    这篇文章最初是关于 ServerFault 的一个问题 https serverfault com questions 131156 user receiving partial downloads https serverfault co
  • 如何移动 Zend_Layout 的“视图”

    通常它会是这样的结构 application modules somemodule views scripts index index phtml 我如何将其移动到 application templates somemodule temp
  • 如何获取 URL 中未知的 $_GET 值的数组?

    我正在使用一个在线购物车 它接受订购的商品并通过 URL 将其唯一 ID 传递到 process php 页面 所以 URL 看起来像这样 process php code 1 231 code 2 532 code 3 342 Anoth
  • 如何显示 PHP 对象

    我有这样的代码 dataRecord1 client gt GetRecord token table filter echo pre print r dataRecord1 echo pre foreach dataRecord1 gt
  • Facebook 扩展权限

    更新2 好的 通过更改使其 有点 工作 loginUrl facebook gt getLoginUrl array canvas gt 1 fbconnect gt 0 req perms gt publish stream next g
  • 这是过滤数据并防止 SQL 注入和其他攻击的安全方法吗?

    我创建了两个简单的函数来在插入数据进入 mysql 查询之前对其进行过滤 对于表单字段 我还使用正则表达式来单独检查每个字段 Form filter function filter var HTML is not allowed var s
  • 我们可以在 Bash 脚本中使用 PHP 吗?

    我有一个 bash 脚本abcd sh bin sh for i in seq 8 do ssh w i uptime ps elf grep httpd wc l free m mpstat done pid sleep 1 kill 9
  • 使用 CodeIgniter 加载视图文件夹外的视图

    我需要从以下范围之外加载视图 this gt load gt view 这似乎是从base application views目录 如何从外部访问视图 application 目录 我想我将不得不延长CI Loader class这是最好的
  • WooCommerce 自定义字段 - 多选

    我在 WooCommerce 的结账页面添加额外的字段 我可以添加文本框等基本字段 但需要添加一个 多 选择框 用户可以在其中选择多个项目 我已经弄清楚如何通过代码添加选择框 如下所示 add action woocommerce afte
  • Zend 框架会话丢失

    我有一个注册表单 当用户注册时 它会将他重定向到他的页面 在 Firefox 和 Chrome 中一切正常 但在 Internet Explorer 中则正常 看起来保存用户信息后 会话就关闭了 并且不会将用户重定向到他的页面 我该如何解决
  • 如何在PHP中完成http响应并进行进一步处理?

    就我而言 我需要向客户端回显一个标志并发送一封电子邮件 现在客户端需要等待电子邮件发送 但我想把这两个步骤分开 该怎么做呢 你可以看一下异步运行 PHP 任务 https stackoverflow com questions 858883
  • 使用活动目录对 Intranet 站点上的用户进行身份验证

    我建立了一个 内联网 站点 它有自己的登录系统 用户注册为新用户 并使用其上的用户名 密码登录该站点 但是 现在我想扩展它 让 Intranet 站点使用现有的 ActiveDirectory 进行身份验证 这就是我正在寻找的 前进 当用户
  • 如何捕获反序列化异常?

    PHP 是否可以在以下情况下捕获异常 unserialize 产生错误 一个简单的方法是 ret unserialize foo if ret null Error case 但这不是最现代的解决方案 最好的方法是像前面提到的那样有一个自定
  • 如何检测iPhone是否有视网膜显示屏?

    如何检测 iPhone 是否配备视网膜显示屏 有靠谱的办法吗 要么是纯 PHP 要么最好是 Zend Framework 方式来执行此操作 我通过这个弄清楚了 var retina window devicePixelRatio gt 1
  • Google Drive V3、Google API 客户端 2.0 - 批量上传失败

    使用 Google Drive V3 和 API v2 0 主分支进行批量上传失败 我已经修改了https github com google google api php client blob master examples batch
  • PHP + MySQL 队列

    我需要一个充当队列的简单表 我的 MySQL 服务器限制是我不能使用 InnoDB 表 只能使用 MyISAM 客户 工人将同时工作 他们每次都需要接受不同的工作 我的想法是执行以下操作 伪代码 job lt SELECT FROM que
  • 什么是 PHP session_start()

    它是否基于 cookie 启动当前会话 从 PHP 网站上得到的 PHP如何控制会话 如果我在用户打开我的登录页面时启动会话 我什至可以使用该会话做什么 我可以使用当前会话来获取有关登录用户的信息吗 PHP 会话系统允许您将数据安全地存储在
  • Laravel 5 Eloquent 在多个级别上将关系附加到 JSON

    因此 在模型中包含关系非常容易 例如 class User extends Model protected with roles class Role extends Model protected with permissions 当有对
  • SimpleXML 返回空数组

    我正在尝试使用 Google Maps API 和 PHP SimpleXML 获取城市的纬度和经度 我尝试这样做 xml simplexml load file http maps googleapis com maps api geoc
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • 如何在 wsgi 中启动 pdftk 子进程?

    我需要在 Django 中提供 Web 请求时启动 pdftk 进程 并等待它完成 我当前的 pdftk 代码如下所示 proc subprocess Popen usr bin pdftk tmp infile1 pdf tmp infi
  • java.lang.NoClassDefFoundError:无法初始化类 javax.media.jai.JAI

    我最近使用 GeoTools 开始了我的第一个程序 其中我还使用了 JAI Java Advanced Imaging 1 1 2 01 和 JDK 1 7 在我添加 GeoTiff Jars 之前它工作得很好 我发现以下错误 线程 mai
  • Haskell 中函数的类型推断

    我正在为 Haskell 做练习题 其中一个问题是 test3 x y x x y 我必须找到它的类型 解决办法是 test3 a gt a gt a gt a 我不明白为什么解决方案中的变量都是 a 而不是将 x 和 y 视为两个不同的变
  • 如何从 VBA 访问 SQLite?

    我有一个 Excel 工作簿 其中包含一些查询本地访问数据库的 adodb 代码 我想对 SQLite 做同样的事情 因为我相信这会提供更好的性能 我怎么做 我可以使用 adodb 或 odbc 连接到 SQLite 文件吗 我需要一些简单
  • PHP 中最快的 PDF 生成速度?

    我正在尝试动态生成一些报告 非常简单的带边框的 HTML 表格 我尝试过 TCPDF 它最多可以渲染 400 行 但超过这个数量 大约 20 页 它就无法处理 DOMPDF 甚至无法做到这一点 这些报告可能有数千行 关于更快的库或更好的攻击
  • 为什么 undef 值会成为 Perl 中的有效数组引用?

    在 perl 5 8 5 中 如果我执行以下操作 则不会收到错误 use strict my a undef foreach my el a whatever 这里发生了什么 打印输出ref a 表明 a在某个时刻更改为有效的数组引用 但我
  • ELMAH 与企业库异常处理块

    我的团队目前正在构建 ASP NET MVC 应用程序 我们正在尝试决定实施哪些框架来处理错误处理和日志记录 选择其中之一而不是其他的原因是什么 就我个人而言 我一直在为许多客户使用 Enterprise Library 但尚未使用 ELM
  • 如何防止条形图中两个标签重叠?

    下图显示了我使用下面的代码创建的图表 我突出显示了缺失或重叠的标签 有没有办法告诉 ggplot2 不要重叠标签 week c 0 1 1 1 1 2 2 3 4 5 statuses c Shipped Shipped Shipped S
  • TensorFlow 中 Variable 和 get_variable 的区别

    据我所知 Variable是创建变量的默认操作 并且get variable主要用于权重共享 一方面 有人建议使用get variable而不是原始的Variable每当您需要变量时进行操作 另一方面 我只看到任何用途get variabl
  • C# String.Format - 无效的输入字符串

    我有一个像这样的 MVC3 HtmlHelper 扩展 public static MvcHtmlString ShowInfoBar this HtmlHelper helper string message InfoMessageTyp
  • 警告:组件“sparks.component.TextInput”不支持 CSS 类型选择器

    我正在尝试做一个简单的 CSS 声明 但是 我收到了上面的警告 不知道如何解决 我认为 s type 应该为我声明样式
  • Beautifulsoup 通过
    分割标签中的文本

    是否可以通过 br 标签将文本与标签分开 我有这个标签内容 u 420 777 593 531 br u 420 776 593 531 br u 420 775 593 531 我只想得到数字 有什么建议吗 EDIT x for x in
  • 不出现对话框

    我使用以下代码 public class Settings extends Activity implements OnClickListener private Activity activity private AlertDialog
  • 在闪亮的应用程序中以模式显示 dataTableOutput

    伟大的 R 社区 我只是想知道是否可以显示DT dataTableOutput在模式中按下操作按钮 例如 数据表输出如下所示 下面是一些代码 app R library shiny library shinydashboard ui lt
  • 扩展巴科斯-诺尔范式的运算顺序

    我正在为一种非常简单的规则语言创建正式规范 非常简单 我想使用 EBNF 因为这是一个标准 但我不知道如何指定操作顺序 这是到目前为止的规范 rule statement AND OR statement variable alphabet
  • 在 Symfony 中禁用特定操作的 CSS 样式表

    有没有办法在 view yml 中为 Symfony 中的特定操作禁用样式表 例如 我的 view yml 中有这样的内容 default stylesheets default css 我希望能够做类似的事情 displaySuccess
  • 在代理后面运行 keycloak 时令牌颁发者无效

    我已将 keycloak 服务器放在 apache 代理后面 ProxyRequests On ProxyVia On ProxyPreserveHost On SSLProxyEngine On SSLProxyCheckPeerCN o
  • 为什么神经网络的权重应该初始化为随机数? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在尝试从头开始构建一个神经网络 所有人工智能文献都一致认为 权重应该初始化为随机数 以便网络更快地收敛 但为什么神经网络初始权重被初始化为随机数呢 我在某处读到这样做是为了 打破
  • 如何使用 Perl 修改现有的 Excel 工作簿?

    With Spreadsheet WriteExcel 我可以创建一个新的工作簿 但是如果我想打开现有的工作簿并修改某些列怎么办 我将如何实现这一目标 我可以使用以下方法解析工作表中的所有数据Spreadsheet ParseExcel然后
  • Magento - 检索具有特定属性值的产品

    在我的块代码中 我尝试以编程方式检索具有特定值属性的产品列表 或者 如果不可能 如何检索所有产品 然后过滤它们以仅列出具有特定属性的产品 如何使用标准布尔过滤器执行搜索AND or OR匹配我的产品的子集 几乎所有 Magento 模型都有