通过使用where条件选择magento属性

时间:2010-09-02 11:24:49

标签: magento entity-attribute-value

$attributeInfo = Mage::getResourceModel('eav/entity_attribute_collection')
  ->setCodeFilter('modellijn')
  ->addAttributeToFilter('brand', 114)
  ->getFirstItem();
你好。我想知道以下正确的语法:

选择属性modellijn所在的属性brand=114。上面的语法给出了错误。我一直在寻找正确的语法2天但不幸的是到目前为止没有结果。

我希望有人愿意帮助我!

1 个答案:

答案 0 :(得分:1)

所以我在这里看到的第一个问题是......你试图为特定品牌选择属性。事实上,拥有品牌(也不是modellijns)。

请说明用例?您是否正在尝试使用品牌114的所有产品获得modellijn(这很有趣)?你的预期产量是多少?

或者,如果您更舒服,那么您希望看到的SQL查询会生成什么?

谢谢, 约瑟夫马斯蒂


好的,根据您的更新,我只是想澄清一些事情。

  • 属性集具有属性
  • 属性有选项(有时)
  • 产品具有属性值
  • 类别包含产品

如果您只是需要找到特定产品的modellijin,那么您只需要求它。如果您有一个产品,这应该可以解决问题:

$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语句,如果可能的话,还有关于使用此数据的位置的更多信息。这将帮助我理解您执行代码的上下文。