AddAttributeToFilter () Vs addFieldToFilter () 'ın farkı nedir?


21

AddAttributeToFilter () ve addFieldToFilter () işlevlerinin farkının ne olduğu konusunda biraz kafam karıştı. Magento'da çekirdek dosyaları kontrol ettim. Ancak net bir fikir bulamadım. Çünkü magentodaki bazı koleksiyonlar için addAttributeToFilter (), bazıları ise addFieldToFilter () kullanmıştır. Lütfen bununla ilgili herhangi bir açıklama çok yardımcı olacaktır. Şimdiden teşekkürler.

Yanıtlar:


45

addAttributeToFilter() EAV koleksiyonlarını filtrelemek için kullanılır.

addFieldToFilter() EAV Dışı koleksiyonları filtrelemek için kullanılır.

EAV modelleri örneğin ürün, müşteri, satış vb addAttributeToFilter(). Olup, bu kuruluşlar için kullanabilirsiniz .

addFieldToFilter()addAttributeToFilter()EAV varlıkları için eşlenir . Yani sadece kullanabilirsiniz addFieldToFiler().

Düzenle:

app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.phpHaritalamanın yapıldığı yere bakabilirsiniz :

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

Mükemmel cevap Bravo. olayların nerede olduğunu bulmamı sağlıyor. EAV olmayanlarda da kullanılabilse bile EAV ile kullanılabileceğini bildirir. harekete geçirilebilir ve okuyucular için sadece bu sorunun cevabını değil, daha fazlasını anlamaları için araçlar sunar. addAttributeToSelect()Vs arasındaki farkla ilgili bir soruya cevap verir misiniz addAttributeToFilter()?
ahnbizcad

1
Fark, SQL'in etkilenen kısmıdır: bir sorgunun kısmına addAttributeToSelect()referanslar SELECTve yalnızca belirli sütunları seçer. addFAttributeToFilter()bir koleksiyonu filtrelemek için kullanılır ve WHEREparçaya eklenir .
Anna Völkl

3

EAV ile ilgili olarak hiçbir fark yoktur.

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

Yanlış olsa da, EAV için filtrelemek için her bir özniteliğin kendi ayarlarına sahip tek başına bir öğe olduğu öznitelik adlandırma özelliğini kullandıkları varsayımı. EAV kullanılmazken, başka bir sütunda olduğu gibi. Bir veritabanı tablosu ve bu nedenle Alan adı iyi çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.