이러한 기술 대부분을 결합하여 원하는 쿼리를 만들 수 있어야합니다. 판매 테이블의 경우 아마도 사용 addFieldToFilter
하지만 아마도 Zend_Db_Expr
가장 저항이 적은 경로 일 것입니다.
addAttributeToFilter :
Magento Wiki에 따르면 : OR
조건이있는 괄호를 만들 때 다음을 수행 할 수 있습니다.
배열이 전달되었지만 속성 코드가 지정되지 않은 경우 동일한 방식으로 처리 될 OR 조건 그룹으로 해석됩니다.
이를 통해 다음을 구성 할 수 있습니다.
$collection->addAttributeToFilter(
array(
array('attribute'=> 'someattribute','like' => 'value'),
array('attribute'=> 'otherattribute','like' => 'value'),
array('attribute'=> 'anotherattribute','like' => 'value'),
)
);
다음 WHERE
형식 의 절이 출력 됩니다.
WHERE ((someattribute LIKE 'value') OR (otherattribute LIKE 'value') OR (anotherattribute LIKE 'value'))
addFieldToFilter :
모델이 DB 테이블에 직접 연결된 경우 이름으로 데이터베이스 열에 조건을 적용하려면 다음이 필요합니다.
$collection->addFieldToFilter(
array('title', 'content'),
array(
array('like'=>'%$titlesearchtext%'),
array('like'=>'%$contentsearchtext%')
)
)
Zend_Db_Expr :
훨씬 더 복잡한 구성의 경우을 사용하여 고유 한 where 절을 작성할 수 있습니다 Zend_Db_Expr
. 예를 들면 :
$collection->getSelect()->where(new Zend_Db_Expr("(e.created_at > '2013-01-01 00:00:00' OR e.created_at <'2012-01-01 00:00:00)"));
출처 :
/programming/5301231/addattributetofilter-and-or-condition-in-magentos-collection
/programming/3826474/magento-addfieldtofilter-two-fields-match-as-or-not-and/7851884#7851884