2012-06-28 3 views
1

Magento에서 사용자 정의 모델을 생성했습니다 (리소스는 Mage_Core_Model_Resource_Db_Collection_Abstract를 기반으로합니다). 모든 것이 잘 작동합니다. 나는, 테이블에 필터를 만들려고 출력하는 것 다음 절 :Magento AND/OR 조합 모델 필터

where 
    product_id = 1 
    and ((customer_id = 0 and customergroup_id = 2) or (customergroup_id = 0 and customer_id = 3)) 
    and ((productgroup_id = 0 and product_class = 8) or (product_class = 0 and productgroup_id = 4)) 

AddFilter를 또는 무언가를 사용하는 것을 수행하는 방법에 대한 어떤 생각?

답변

2

addFieldToFilter/addAttributeToFilter 방법은 복합체에 적합하지 않습니다. 직접 쿼리를 작성해야합니다.

$collection->getSelect() 
    ->where('product_id = ?', 1) 
    ->where(sprintf(
     '((customer_id = %d AND customergroup_id = %d) OR (customer_id = %d AND customergroup_id = %d))', 
     0, 2, 3, 0)) 
    ->where(sprintf(
     '((productgroup_id = %d AND product_class = %d) OR (productgroup_id = %d AND product_class = %d))', 
     0, 8, 4, 0));