Как сравнить два поля в запросе Magento? - PullRequest
4 голосов
/ 08 ноября 2011

Я получаю все свои активные специальные продукты, используя этот код, который я где-то нашел:

  $collection = $this->_addProductAttributesAndPrices($collection)
 ->addStoreFilter()
 ->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate))
 ->addAttributeToFilter('special_to_date', array('or'=> array(
    0 => array('date' => true, 'from' => $todayDate),
    1 => array('is' => new Zend_Db_Expr('null')))
 ), 'left')
 ->setPageSize($this->get_prod_count())
 ->setCurPage($this->get_cur_page());

Теперь я хочу получить только продукты, которые имеют специальную цену <= цена, однако ядо сих пор не могу понять, как это сделать. </p>

Я читал эту страницу: http://www.magentocommerce.com/wiki/5_-_modules_and_development/catalog/using_collections_in_magento

, и я пытался это без успеха:

     ->addAttributeToFilter('special_price', array('lt' => 'price'))

Спасибоза вашу помощь!

Ответы [ 2 ]

7 голосов
/ 18 февраля 2012

Вы можете попробовать это , спасибо за Zyava!

В моем случае:

-> addAttributeToFilter ('price', array ('gt')=> новый Zend_Db_Expr ('final_price')))

0 голосов
/ 08 ноября 2011

Менее эффективным решением было бы перебрать коллекцию,

$products = array();
$collection = Mage::getResourceModel('catalog/product_collection');
foreach($collection as $col) {
    $product = Mage::getModel('catalog/product')->load($col->getId());
    if( $product->getPrice() > $product->getSpecialPrice() ) {
        $products[] = $product;
    }
 }

в итоге у вас будет массив продуктов ...

...