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 回答