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()vs の違いに関する質問に答えていただけますaddAttributeToFilter()か?
ahnbizcad

1
違いは、影響を受けるSQL addAttributeToSelect()SELECT一部です。クエリの一部への参照であり、特定の列のみを選択します。addFAttributeToFilter()コレクションのフィルタリングに使用され、そのためWHEREパーツに追加されます。
アンナフォルクル

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.