1

これは、いくつかの巧妙なmysql式またはzend結合で解決できると確信していますが、解決するのに十分な知識がありません.SOコミュニティの誰かが解決できることを願っています.

Magento に製品のコレクションがあり、カテゴリの位置順に並べられているとします。

コレクションから、カテゴリの最高位にある 2 つの製品のみを取得したいと考えています。

以下は説明する必要があります。

Category:
    Product A (position 3);
    Product B (position 1);
    Product C (position 0);
    Product D (position 2);

このコレクションでは、製品 C と B のみを取得します。これは、これらが 2 つの最高位であるためです。

別の例:

Category:
    Product A (position 1);
    Product B (position 3);
    Product C (position 0);
    Product D (position 2);

このコレクションでは、製品 C と A のみを取得したいと考えています。

これを 1 回のコレクションの読み込みで行うにはどうすればよいでしょうか。たとえば、コレクションをロードしてから繰り返し処理し、手動でソートしたくありません。

4

1 に答える 1

0
$_category = Mage::getModel('catalog/category')->load($categoryId);
$coll = $_category->getProductCollection()->addAttributeToSort('position','ASC');
$coll->getSelect()->limit(2);
$coll->load();

その後、コレクションを反復処理できます。

foreach ($coll as $product) {
   // Do sth. with $product
}
于 2013-01-09T10:38:22.370 に答える