2
$attributeInfo = Mage::getResourceModel('eav/entity_attribute_collection')
  ->setCodeFilter('modellijn')
  ->addAttributeToFilter('brand', 114)
  ->getFirstItem();

やあ。次の正しい構文を知りたいです。

属性の属性を選択しmodellijnますbrand=114。上記の構文はエラーを返します。正しい構文を求めて 2 日間検索しましたが、残念ながらこれまでのところ結果はありません。

ここの誰かが喜んで私を助けてくれることを願っています!

4

1 に答える 1

1

ここで最初に目にする問題は、特定のブランドの属性を選択しようとしているということです。属性には、実際にはブランドがありません (モデルリンもありません)。

ユースケースを明確にしていただけますか?ブランド 114 のすべての製品の modellijn (入力するのが楽しい) 値を取得しようとしていますか? 期待される出力は何ですか?

または、そのような方がよければ、どのような SQL クエリが生成されると期待できますか?

ありがとう、ジョセフ・マスティ


さて、あなたの更新に基づいて、いくつかのことを明確にしたかっただけです.

  • 属性セットには属性があります
  • 属性にはオプションがあります (場合によっては)
  • 製品には属性値があります
  • カテゴリには商品があります

特定の製品のモデルを見つける必要がある場合は、それを尋ねるだけです。単一の製品がある場合、これでうまくいくはずです。

$product = Mage::getModel("catalog/product")->load($id); // Magento does this for you in some cases
$product->getModellijn(); // this will return your value
$product->getAttributeText('modellijn'); // IIRC, this works for <select> type attributes

コレクションから商品をロードする場合、その属性もロード​​することを Magento に伝える必要があります。EAV からすべてを選択すると、標準の正規化されたデータベースからすべてを選択するよりもさらにコストがかかります。したがって、Magento は、必要なものを伝えることを期待しています。

$collection = Mage::getModel("catalog/product")->getCollection();
$collection->addAttributeToFilter("brand", 114); // limit for brand
$collection->addAttributeToSelect("modellijn"); // * also works but is slow

foreach($collection as $product) {
    $product->getModellijn(); // just as above
    $product->getAttributeText('modellijn'); 
}

それがあなたのためにそれをするかどうか私に知らせてください。そうでない場合は、上記の投稿を修正して、より完全な SQL ステートメントを含めてください。可能であれば、このデータを使用している場所に関する詳細情報を追加してください。これは、コードを実行しているコンテキストを理解するのに役立ちます。

于 2010-09-02T13:19:50.403 に答える