2011-02-04 5 views
1

Magento에서 특정 가격대의 제품을 얻으려고합니다. 나는 내가 생각할 수있는 처음 두 논리적 인 방법을 시도했다. 첫 번째는 내 코드에 두 개의 addAttributeToFilter() 문을 추가하는 것입니다.Magento 컬렉션의 singel 속성에 두 조건 적용

$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()를 수행하여 하이 엔드 만 적용한다는 쿼리에서 확인했습니다.

누구나 가격대가있는 제품을 어떻게 얻을 수 있는지 알고 있습니다.

답변

1

내가이 일을하게 할 필요 결국 무엇인가 (감사 앨런 스톰! - 젠토의 웹 사이트에 자신의 가이드에 있음).

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를 수행하려면 addAttributeToFilter가 아닌 addFieldToFilter를 사용해야합니다.

0

거의 다 왔어.

$filter = array(
    array("gteq" => $r['price_low']), 
    array("lteq" => $r['price_high']), 
); 

$products->addAttributeToFilter("price", $filter); 

그것은 매우 직관적 아니지만, 그것을 작동 : 나는 당신이 찾고있는 구문이 믿습니다.

희망 하시겠습니까?

감사합니다, 조 여기

관련 문제