Pregunta

a tener una pregunta sobre algunas cosas básicas de filtrado y limitación de colecciones de productos. Busqué en la web la solución pero nada funcionó. Espero obtener ayuda aquí. Entonces, la tarea es limitar los resultados con la función límite (). Lo que quiero es establecer la última ID de producto y consultar los próximos 100 productos. Cron Jobs llama al código y necesito una solución para consultar cada vez el próximo grupo de productos. Aquí mi código:

$simpleProducts = Mage::getModel('catalog/product')->getCollection()
        ->addAttributeToFilter('type_id', array('eq' => 'simple'))
        ->addAttributeToFilter('sku', array("notnull" => true))
        ->addFieldToFilter('visibility', Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE)
        ->addFieldToFilter('status', Mage_Catalog_Model_Product_Status::STATUS_ENABLED)
        ->addAttributeToSelect('entity_id')
        ->addAttributeToSelect('search_sku_textfield')
        ->addAttributeToSelect('sku')
        ->limit(100,$lastProdId);

También tengo en algunos productos un conjunto de atributos (con el conjunto de atributos). Sería bueno consultar solo los productos que tienen el atributo (asignado truh el conjunto de atributos). Esto no funciona

         ->addFieldToFilter('search_sku_textfield', array("null" => true))
¿Fue útil?

Solución

¿Qué pasa con algo como esto?

    Mage::getResourceModel('catalog/product_collection')
        ->addAttributeToFilter('type_id', array('eq' => 'simple'))
        ->addAttributeToFilter('sku', array("notnull" => true))
        ->addFieldToFilter('visibility', Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE)
        ->addFieldToFilter('status', Mage_Catalog_Model_Product_Status::STATUS_ENABLED)
        //->addAttributeToSelect('entity_id')   // you don't need this
        ->addAttributeToSelect('search_sku_textfield')
        //->addAttributeToSelect('sku')         // static attributes are always loaded
        ->addFieldToFilter('entity_id', array('gt' => $productId))
        ->addFieldToFilter('attribute_set_id', $attributeSetId)
        ->setOrder('entity_id')
        ->setPageSize(100);

Otros consejos

Oye, creo que necesitas algo como esto. Encuentre los productos que tienen ID mayor que el ID actual proporcionado y establece el tamaño de la página en 100, devolverá los próximos 100 registros del actual.

Recuerde establecer el orden del producto también.

$_product->addFieldToFilter('entity_id',array('gt' => $productId))
->setOrder('entity_id')
->setPageSize(100);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top