Magento – addAttributeToSelect Call to undefined method M2

blockscollection;fatal errormagento2model

I have two custom modules and am calling one collectionfactory in other module and getting `

Call to undefined method addAttributeToSelect

Collection file look like

    class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
{
    /**
     * Initialize resource collection
     *
     * @return void
     */
    public function _construct()
    {
        $this->_init('Vendor\Module\Model\Hello', 'Vendor\Module\Model\ResourceModel\Hello');
    }
}

and am calling in block

use Vendor\Module\Model\ResourceModel\Hello\CollectionFactory; 

    class Custom extends \Magento\Backend\Block\Widget\Grid\Extended
    {
    public function __construct(
            CollectionFactory $collectionFactory,
            array $data = []
        ) {

            $this->collectionFactory = $collectionFactory;
            parent::__construct($context, $backendHelper, $data);
        }

    protected function _prepareCollection()
        {
            $collection = $this->collectionFactory->create();
            $collection->addAttributeToSelect('*');
            $this->setCollection($collection);
            return parent::_prepareCollection();
        }

    }

Getting PHP Fatal error: Uncaught Error: Call to undefined method
Vendor\Module\Model\ResourceModel\Hello\Collection::addAttributeToSelect()

Best Answer

You have to replace addAttributeToSelect('*') with addFieldToSelect('*')

addAttributeToFilter() is used to filter EAV collections.

addFieldToFilter() is used to filter Non-EAV collections.