Sự khác biệt của addAttributionToFilter () Vs addFieldToFilter () là gì?


21

Tôi hơi bối rối về sự khác biệt của các hàm addAttributionToFilter () và addFieldToFilter (). Tôi đã kiểm tra các tập tin cốt lõi trong magento. Nhưng tôi không thể tìm ra một ý tưởng rõ ràng. Bởi vì đối với một số bộ sưu tập trong magento đã sử dụng addAttributionToFilter () và một số đã sử dụng addFieldToFilter (). Xin vui lòng làm rõ về điều này sẽ là một trợ giúp tuyệt vời. Cảm ơn trước.

Câu trả lời:


45

addAttributeToFilter() được sử dụng để lọc các bộ sưu tập EAV.

addFieldToFilter() được sử dụng để lọc các bộ sưu tập Non-EAV.

Các mô hình EAV là ví dụ về sản phẩm, khách hàng, bán hàng, v.v. để bạn có thể sử dụng addAttributeToFilter()cho các thực thể đó.

addFieldToFilter()được ánh xạ tới addAttributeToFilter()các thực thể EAV. Vì vậy, bạn chỉ có thể sử dụng addFieldToFiler().

Chỉnh sửa:

Bạn có thể xem app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.phpnơi Lập bản đồ được thực hiện:

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

câu trả lời tuyệt vời. bravo. nó cho phép tôi tìm ra mọi thứ ở đâu nó thông báo cho tôi rằng một người có thể sử dụng được với EAV ngay cả khi nó cũng có thể xử lý không phải EAV. nó có thể thực hiện được và nó cung cấp các công cụ để người đọc tìm hiểu thêm, không chỉ là câu trả lời cho câu hỏi cụ thể này. Bạn có phiền khi trả lời một câu hỏi về sự khác biệt giữa addAttributeToSelect()vs addAttributeToFilter()?
ahnbizcad

1
Sự khác biệt là một phần của SQL được thực hiện: addAttributeToSelect()tham chiếu đến SELECTphần của truy vấn và chỉ chọn các thuộc địa cụ thể. addFAttributeToFilter()được sử dụng để lọc một bộ sưu tập và được thêm vào WHEREphần đó.
Anna Völkl

3

Liên quan đến EAV không có sự khác biệt.

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

Giả định của tôi, mặc dù tôi có thể sai, là đối với EAV, họ sử dụng việc đặt tên thuộc tính là mỗi thuộc tính để lọc, bản thân nó là một mục độc lập có cài đặt riêng, v.v. một bảng cơ sở dữ liệu và do đó, tên trường hoạt động tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.