I have checked the similar post: Magento2.2 getCollection from Factory deprecated

But I still don't find the answer of it. I am calling getCollection() function, and PHPStorm saying that this function is deprecated.


where $this->_myCollectionFactory is the instance of my collection factory which is \Vendor\Module\Model\ModuleFactory.

And this is my ModuleFactory class code


namespace Vendor\Module\Model;

class ModuleFactory
     * @var \Magento\Framework\ObjectManagerInterface
    protected $_objectManager;

     * @param \Magento\Framework\ObjectManagerInterface $objectManager
    public function __construct(\Magento\Framework\ObjectManagerInterface $objectManager)
        $this->_objectManager = $objectManager;

     * Create new country model
     * @param array $arguments
     * @return \Magento\Directory\Model\Country
    public function create(array $arguments = [])
        return $this->_objectManager->create('Vendor\Module\Model\Module', $arguments, false);

My question is, what is the alternate of getCollection if it is deprecated?

3 Answers 3


Shoaib Munir ,you are wrong as $this->_myCollectionFactory instance of a collection faCTORY CLASS . If you have using Collection factory class then getting collection data, you don't need to call method getCollection.Also getCollection is not the method of collection class and it is the method of Model class Like Magento\Catalog\Model\Product.

If you have a collection class then you need to use the code like below

$collection = $this->_myCollectionFactory->create()

  • Updated my answer, added more info. getCollection() code is working fine and it is getting my collection, but phpStorm giving warning that the function is deprecated. Commented Apr 13, 2019 at 3:07
  • Please check your commit where $this->_myCollectionFactory is the instance of my collection factory which is \Vendor\Module\Model\ModuleFactory .How can a Modelfactory class is collection factory class???. Please understand Model,ResourceModel,Collection class and their factory class
    – Amit Bera
    Commented Apr 13, 2019 at 5:11
  • Is this solution is applicable for previous versions of Magento 2? Commented May 13, 2019 at 10:15
  • Got your point now. Thanks mate :) Commented Jul 10, 2019 at 18:01

Use a CollectionFactoryas follows. For example, for Magento\Catalog\Model\Product :

public function __construct(    
  \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory
) {
  $this->productCollectionFactory = $productCollectionFactory; 

public function getProductCollection()
  return $this->productCollectionFactory->create();
  • Thanks for the answer. Amit bera gave answer first. +1 for your efforts and help :) Commented Jul 10, 2019 at 18:02

In Magento2 it is always recommend using Search Criteria to get collections For example:

   $searchCriteriaBuilder->addFilter('zip', $saveSearchZip['zip'], 'eq')
        ->addFilter('country', $saveSearchZip['country'], 'eq')
        ->addFilter('latitude', $saveSearchZip['latitude'], 'eq')
        ->addFilter('longitude', $saveSearchZip['longitude'], 'eq');

   $collection = $myModuleRepositoryInterfaceObject->getList($searchCriteriaBuilder->create());

Please give a refer this for better understanding. Also find sample module

  • what is the instance of $searchCriteriaBuilder? is it collection factory? Commented Apr 12, 2019 at 12:03
  • @ShoaibMunir Magento\Framework\Api\SearchCriteriaBuilder::class , i have also included documentation for it please go through it it would be helpful Commented Apr 12, 2019 at 12:05
  • what if my collection is related to a custom table? how can I get my collection through search criteria? Commented Apr 12, 2019 at 12:05
  • 1
    I am assuming that that you have created a module for custom, So as per magento standards you have to create repository interface for it . so you can use that repo interface myModuleRepositoryInterfaceObject Commented Apr 12, 2019 at 12:08
  • No Vishawas this is not related to customer, this is custom module of a custom table collection. Commented Apr 12, 2019 at 12:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.