Skip to main content
3 of 7
added 2445 characters in body

Large Collection Exhausting Memory

I am writing an admin module. I created a collection and if the number of rows in the table are small it loads fine. Ultimately the table will have 250k rows in it and when I attempt to load the collection it exhausts memory. I was under the impression that Magento would lazy load collections. I also will probably need to know how to use the resource iterator in mage 2 as well. I can provide code samples but there is little more than a basic module skeleton at this point. I would greatly appreciate a code example of how to handle and iterate through a large collection.

Note: the collection is pulling from a custom table

Controller:`<?php namespace Corra\Corraimportexport\Controller\Adminhtml\Import;

use Magento\Backend\App\Action; use Magento\Backend\App\Action\Context; use Corra\Corraimportexport\Model\WebcustomersFactory;

class Index extends \Magento\Backend\App\Action {

protected $_modelWebcustomersFactory;

public function __construct(
    Context $context,
    WebcustomersFactory $modelWebcustomersFactory
) {
    parent::__construct($context);
    $this->_modelWebcustomersFactory = $modelWebcustomersFactory;
}

public function execute()
{

    $webcustomersModel = $this->_modelWebcustomersFactory->create();

    // Load the item with ID is 1
    /*$item = $webcustomersModel->load(976);
    var_dump($item->getData());*/

    // Get webcustomers collection
    $webcustomersCollection = $webcustomersModel->getCollection();
    
    var_dump($webcustomersCollection->count());
    die();
    // Load all data of collection
    foreach ($webcustomersModel->getCollection() as $key => $webcustomer) {
        var_dump($webcustomer->getData());
        die();
    }

    $this->_view->loadLayout();
    $this->_view->renderLayout();
}

}

_init('Corra\Corraimportexport\Model\ResourceModel\Webcustomers'); } } _init('web_customers', 'entity_id'); } } _init( 'Corra\Corraimportexport\Model\Webcustomers', 'Corra\Corraimportexport\Model\ResourceModel\Webcustomers' ); } }`