2

私は Magento getResourceModel の初心者で、クエリに単純なフィルターを追加しようとしていますが、getResourceModel を使用してそれを理解することはできません。

元のクエリ:

$collection = Mage::getResourceModel('catalog/product_collection');
Mage::getModel('catalog/layer')->prepareProductCollection($collection);
$collection->addAttributeToFilter('promotion', 1)->setOrder('price', 'desc');

where句を追加したいだけです:

 (`price` - `final_price`) >= (`price` * 0.4) 

誰かがこれを行うのを手伝ってくれますか?

これですべてです、ありがとう!

4

1 に答える 1

2

最後に、これを行う正しい方法を見つけました。ここに回答を投稿するのが遅れて申し訳ありません。@feeelaに感謝します。

/lib/Zend/Db/Select.phpwhere関数が存在することがわかったファイルを見る:

public function where($cond, $value = null, $type = null)
{
  $this->_parts[self::WHERE][] = $this->_where($cond, $value, $type, true);

  return $this;
}

したがって、必要なのは、必要な条件を与えるこの関数への呼び出しを追加することだけです。私の場合は、40% 割引の商品をフィルターする条件を追加するだけです。

$collection = Mage::getResourceModel('catalog/product_collection');
Mage::getModel('catalog/layer')->prepareProductCollection($collection);
$collection->addAttributeToFilter('promotion', 1)
           ->addStoreFilter();
$collection->getSelect()->where( '(`price` - `final_price`) >= (`price` * 0.4)' ); 

だから、これが何人かの人に役立つことを願っています!

グラツィエ・トゥッティ!

于 2012-10-26T12:53:05.627 に答える