수색…


매개 변수

매개 변수 세부
$ addFieldToFilter ( $ field , $ condition = null) {string} 필터에 추가 할 필드입니다.
$ addFieldToFilter ($ field, $ condition = null ) {혼합} 우리가 사용할 필터의 정의.
addAttributeToFilter ( $ attr , $ condition = null, $ join = 'inner') {string} 필터에 추가 할 필드입니다.
addAttributeToFilter ($ attr, $ condition = null , $ join = 'inner') {혼합} 우리가 사용할 필터의 정의.
addAttributeToFilter ($ attr, $ condition = null, $ join = 'inner' ) {( 'inner', 'left')} EAV 테이블에 조인 할 때 사용할 SQL 조인 유형입니다.

비고

필터 비교 인수

Magento는 또한 비교 연산자를 사용하여 유연한 필터링 방법을 제공합니다. 다음은 유효한 연산자와 구문의 목록입니다.

모든 비교 인수는 addFieldToFielter() 또는 addAttributeToFilter() 메소드의 두 번째 매개 변수로 전달 될 수 있습니다.

$collection_of_products->addAttributeToFilter('visible',array("eq"=>1));
비교 인수 배열 결과 SQL 스 니펫
같음 array ( "eq"=> $ var) WHERE (`my_field` = $ var)
같지 않음 array ( "neq"=> $ var) WHERE (`my_field`! = $ var)
처럼 array ( "like"=> $ var) WHERE (`my_field` LIKE $ var)
좋아하지 않는 array ( "nlike"=> $ var) WHERE (`my_field`는 $ var과 같지 않습니다.)
~이다. array ( "is"=> $ var) WHERE (`my_field` IS $ var)
에서 array ( "in"=> $ var) WHERE (`my_field` IN ($ var))
있음 없음 array ( "nin"=> $ var) WHERE (`my_field` NOT IN ($ var))
없는 array ( "null"=> true) WHERE (`my_field`는 NULL)
Null이 아님 array ( "notnull"=> true) WHERE (`my_field`는 NULL이 아닙니다)
보다 큰 array ( "gt"=> $ var) WHERE (`my_field`> $ var)
보다 작음 array ( "lt"=> $ var) WHERE (`my_field` <$ var)
크거나 같음 array ( "gteq"=> $ var) WHERE (`my_field`> = $ var)
보다 작거나 같음 array ( "lteq"=> $ var) WHERE (`my_field` <= $ var)
세트에서 찾기 array ( "finset"=> array ($ var)) 어디서 (find_in_set ($ var,`my_field`)
시작 및 끝 array ( "from"=> $ var1, "to"=> $ var2) WHERE (`my_field`> = $ var1 AND`my_field` <= $ var2)

컬렉션 필터링

Magento에는 컬렉션을 필터링하는 강력한 방법 모음이 있습니다. 콜렉션에 포함될 수있는 두 가지 유형의 오브젝트가 있으므로 먼저 필터링 할 데이터의 유형을 결정해야합니다. Magento는 제품 및 카테고리와 같은 엔티티에 대한 EAV 데이터 모델을 구현합니다. EAV 객체 컬렉션을 필터링하는 경우 사용할 다른 메소드 집합이 있습니다.

Magento에서는 주문이 EAV 개체로 저장되지 않습니다. 이렇게하면 주문 컬렉션이 기본 컬렉션을 필터링하는 좋은 예가됩니다.

$collection_of_orders = Mage::getModel('sales/order')->getCollection();
$collection_of_orders->addFieldToFilter('status','processing');

제품 컬렉션을 살펴보면 제품이 EAV 데이터 모델에 저장된다는 것을 알 수 있습니다. EAV 속성으로도 쉽게 필터링 할 수 있습니다.

$collection_of_products = Mage::getModel('catalog/product')->getCollection();
$collection_of_products->addAttributeToFilter('visible',1);

필터의 AND 및 OR 처리

데이터를 쿼리 할 때 우리가 찾고있는 정확한 데이터 세트를 얻으려면 종종 하나 이상의 필터가 필요합니다. SQL에서는 AND 및 OR 절을 사용하여이 문제를 처리합니다. 우리는 콜렉션을 사용하여 동일한 것을 달성 할 수 있습니다.

쿼리에 AND 절을 추가하려면 다른 메서드 호출을 추가하기 만하면됩니다. 이렇게하면 두 번째 필터가 원래 WHERE 문에 AND로 결합됩니다.

Mage::getModel('catalog/product')->getCollection()
        ->addFieldToFilter('sku',array('like'=>'a%'))
        ->addFieldToFilter('sku',array('like'=>'%b'));

결과 WHERE 절은 다음과 같습니다.

WHERE (e.sku like 'a%') AND (e.sku like '%b')

이제 우리는 'a'또는 'b'로 끝나는 모든 skus를 원한다고 가정 해 봅시다. OR 절을 어떻게 추가합니까? Magento의 컬렉션 덕분에, 그것은 꽤 솔직합니다. 필터를 필터 배열의 두 번째 요소로 추가합니다.

Mage::getModel('catalog/product')->getCollection()
        ->addFieldToFilter('sku', array(
            array('like'=>'a%'), 
            array('like'=>'%b')
        ));

이제 결과 WHERE 절은 다음과 같습니다.

WHERE (((e.sku like 'a%') or (e.sku like '%b'))) 


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow