我試圖將產品價格與其在Magento集合中的銷售價格進行比較。具體而言,試圖找到所有銷售價格大於或等於其基本價格的產品。如何在集合中比較Magento中的2個不同字段
從邏輯上講,我想只是把字段名到addAttributeToFilter
電話:
->addAttributeToFilter('special_price', array('gteq' => 'special_price'));
但沒有奏效。有沒有一種很好的方法可以做到這一點,不需要我讓每一件銷售價格的產品手動檢查銷售價格是否大於或等於其基準價格?
SOLUTION
這是很奇怪的並顯示奇Magento的收藏怎麼能有時。事實證明,僅僅因爲你把->addAttributeToSelect('price')
放到了你的通話鏈中,並不意味着你以一個很好的方式獲得價格。所以我所要做的就是放入一個條件語句,以便我可以在查詢的其他部分訪問它。我選擇了->addAttributeToFilter('price', array('gteq' => 0))
。我必須以特殊價格做同樣的事情。
然後當它來到放置到WHERE條件,我仍然沒有方便的名字獲得的價格和優惠的價格,所以我不得不where語句結束了$products->getSelect()->where('_table_special_price.value >= _table_price.value');
使用他們的表值,所以我的這到底是我的整個鏈條看上去像(裏面還有幾個自定義屬性):
$products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('id')
->addAttributeToSelect('name')
->addAttributeToSelect('price')
->addAttributeToSelect('special_price')
->addAttributeToFilter('price', array('gteq' => 0))
->addAttributeToFilter('special_price', array('gteq' => 0))
->addAttributeToFilter('visibility', 4)
->addAttributeToFilter('discontinued', array('neq' => 1))
->addAttributeToFilter('status', 1)
;
$產品 - > getSelect() - >在哪裏( '_table_special_price
value
> = _table_price
value
' );
你幾乎讓我在那裏。爲了完成這項工作,請參閱編輯我的問題,瞭解我必須做的所有事情。 –