我目前正在尝试在Magento中获得具有一定价格范围的产品。我尝试了我能想到的前两种逻辑方式。第一个是在我的代码中添加两个addAttributeToFilter()语句。
$products->addAttributeToFilter('price', array('gteq' => $r['price_low']));
$products->addAttributeToFilter('price', array('lteq' => $r['price_high']));
没有骰子。这只是给了我第二个。
然后我决定尝试将两个条件添加到单个addAttributeToFilter()中,如下所示:
$price_array['gteq'] = $r['price_low'];
$price_array['lteq'] = $r['price_high'];
$products->addAttributeToFilter('price', $price_array);
再次只是高端。我在我的集合上做了一个getSelect(),并在查询中确认它只是应用了高端。
有谁知道如何获得价格范围广的产品。
答案 0 :(得分:1)
以下是我最终要做的工作(感谢Alan Storm! - 在他的Magento网站上的指南中找到)。
if($has_low_price && $has_high_price) {
$products->addFieldToFilter('price', array('gteq' => $r['price_low']));
$products->addFieldToFilter('price', array('lteq' => $r['price_high']));
} elseif($has_high_price) {
$products->addAttributeToFilter('price', array('lteq' => $r['price_high']));
} elseif($has_low_price) {
$products->addAttributeToFilter('price', array('gteq' => $r['price_low']));
} else {
}
如果你想做AND,你必须使用addFieldToFilter而不是addAttributeToFilter。
答案 1 :(得分:0)
你快到了。我相信您正在寻找的语法是:
$filter = array(
array("gteq" => $r['price_low']),
array("lteq" => $r['price_high']),
);
$products->addAttributeToFilter("price", $filter);
它不是很直观,但它有效。
希望有所帮助!
谢谢, 乔