addAttributeToFilter ()와 addFieldToFilter ()의 차이점은 무엇입니까?


21

addAttributeToFilter ()와 addFieldToFilter () 함수의 차이점이 무엇인지 혼란 스럽습니다. magento에서 핵심 파일을 확인했습니다. 그러나 나는 명확한 아이디어를 알아낼 수 없었다. magento의 일부 컬렉션은 addAttributeToFilter ()를 사용하고 일부는 addFieldToFilter ()를 사용했기 때문입니다. 이것에 대한 명확한 설명은 큰 도움이 될 것입니다. 미리 감사드립니다.

답변:


45

addAttributeToFilter() EAV 수집을 필터링하는 데 사용됩니다.

addFieldToFilter() 비 EAV 모음을 필터링하는 데 사용됩니다.

EAV 모델은 예를 들어 제품, 고객, 판매 등이므로 addAttributeToFilter()해당 엔터티에 사용할 수 있습니다 .

addFieldToFilter()addAttributeToFilter()EAV 엔터티에 매핑됩니다 . 그래서 당신은 사용할 수 있습니다 addFieldToFiler().

편집하다:

app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php매핑이 수행되는 위치를 살펴볼 수 있습니다 .

public function addFieldToFilter($attribute, $condition = null) {
    return $this->addAttributeToFilter($attribute, $condition);
}

훌륭한 답변. 브라보. 사물이 어디에 있는지 알아낼 수 있습니다. 비 EAV도 처리 할 수 ​​있더라도 EAV와 함께 사용할 수 있음을 알려줍니다. 그것은 실행 가능하고 독자들이이 특정 질문에 대한 답뿐만 아니라 더 많은 것을 알아낼 수있는 도구를 제공합니다. 당신의 차이에 대한 질문에 대답시겠습니까 addAttributeToSelect()대를 addAttributeToFilter()?
ahnbizcad

1
차이점은 실제 SQL addAttributeToSelect()SELECT일부입니다. 쿼리 부분에 대한 참조 이며 특정 열만 선택합니다. addFAttributeToFilter()컬렉션을 필터링하는 데 사용되며 WHERE부품에 추가됩니다 .
Anna Völkl

3

EAV와 관련하여 차이는 없습니다.

/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php
public function addFieldToFilter($attribute, $condition = null)
{
    return $this->addAttributeToFilter($attribute, $condition);
}

내가 잘못 생각할 수도 있지만 EAV의 경우 필터링 할 각 속성이 자체 설정 등이있는 독립형 항목이므로 속성 이름 지정을 사용한다고 가정합니다. 데이터베이스 테이블과 이름 필드는 잘 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.