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

嗨那裏。我想知道以下正確的語法:magento通過使用條件選擇屬性

選擇屬性modellijn,其中屬性brand=114。上面的語法給出了一個錯誤。我一直在尋找2天的正確語法,但不幸的是迄今爲止沒有結果。

我希望這裏有人願意幫助我!

回答

1

因此,我在這裏看到的第一個問題是...您試圖選擇特定品牌的屬性。屬性事實上並不是擁有品牌(也不是模型)。

您能否澄清一下用例?您是否試圖獲得品牌114的所有產品的modellijn(這很有趣)類型的價值?你的預期產出是多少?或者,如果你更喜歡這樣,那麼你期望看到的SQL查詢會產生什麼?

感謝, 約瑟夫Mastey


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

  • 屬性集合具有屬性
  • 屬性有選項(有時)
  • 產品具有的屬性值
  • 分類有產品

如果你只需要找到特定產品的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語句,如果可能的話,更多關於您使用此數據的位置的信息。這將幫助我理解執行代碼的上下文。

+0

正常SQL會是這樣的: 「選擇MODELLIJN FROM .... WHERE BRAND_ID = 114」 .... 我有很多的產品,我們一直在添加屬性的每個產品類別。 基本上我知道某些產品的brand_id是什麼。但是現在我想知道該產品的Modellijn(模型)是什麼。例如 。我的品牌是賓利空調與不。114價值和該產品的modellijn(模型)是breitling 希望你能幫助我...因爲這個eav模型是非常困惑我! – 2010-09-02 13:27:21

+0

modellijn和品牌都屬於該產品的屬性 – 2010-09-02 13:28:31