2

$collection->setPage(0, 10);非EAVモデルで作業する必要がありますが、機能しません。私は試しまし$matches->getSelect()->setPage(0, 10);たが、役に立ちません。

4

2 に答える 2

5

このsetPage()メソッドは、クラスで定義されているため、MagentoのEAVベースのコレクションでのみ機能しMage_Eav_Model_Entity_Collection_Abstractます...

public function setPage($pageNum, $pageSize)
{
    $this->setCurPage($pageNum)
        ->setPageSize($pageSize);
    return $this;
}

ご覧のとおり、EAVベースのコレクションで利用できる便利な速記ユーティリティです。非EAVベースのコレクションの場合、コレクションクラスでこれの独自のバージョンを作成するか、コレクションを初期化するときにクライアントコードでページ番号とサイズを設定するためのより詳細な構文を使用できます。

$collection->setCurPage($pageNum)
           ->setPageSize($pageSize)
;
于 2012-07-16T19:12:25.000 に答える
1
public function updateIndex()
{
    $productsCollection = Mage::getModel('catalog/product')->getCollection()
        ->addAttributeToSelect(array('name', 'image', 'url_key', 'price', 'visibility'));

    $productsCollection->setPageSize(100);

    $pages = $productsCollection->getLastPageNumber();
    $currentPage = 1;

    do {
        $productsCollection->setCurPage($currentPage);
        $productsCollection->load();

        foreach ($productsCollection as $_product) {

            $insertData = array(
                'entity_id' => $_product->getId(),
                'title' => $_product->getName(),
                'image' => $_product->getImage(),
                'url' => $_product->getUrlKey(),
                'price' => $_product->getFinalPrice(),
            );

            $this->_getWriteAdapter()->insertOnDuplicate(
                $this->getTable('atwix_sonar/suggestions'),
                $insertData,
                array('title', 'image', 'url', 'price')
            );
        }

        $currentPage++;
        //clear collection and free memory
        $productsCollection->clear();
    } while ($currentPage <= $pages);
}

この完全な例を参照してください。これは、magentoコレクションのポケットベル機能の使用方法を正確に示しています。ソース:http ://www.atwix.com/magento/working-with-large-collections/

于 2015-07-20T11:23:45.720 に答える