• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
logo

Tutsplanet

Free Technical and Blogging Resources

  • Home
  • Web Hosting
  • Programming
  • Plugins
  • Write For US
  • News
  • About Us
  • Tools
You are here: Home / PHP / How To Get The Collection Of Records From A Custom Module In Magento 2?

How To Get The Collection Of Records From A Custom Module In Magento 2?

Sep 23, 2020 by Editorial Staff Leave a Comment

If you are working on a custom Magento 2 module, and wondering how to get the collection of records from your custom database table, this article is for you. This is very common that your Magento 2 website needs more database tables than what Magento shipped with. So in a listing page such as blog listing, you need to get the collection of records. To do this in Magento 2 way, follow the article carefully.

We need to create 3 files in order achieve the above.

1) Model , 2) ResourceModel , 3) Collection

For the sake of this example, I assume our namespace would be Mycompany, Module name would be Blog and database table would be blog.

First we create a file for the model at app/code/Mycompany/Blog/Model/Blog.php

<?php

namespace Mycompany\Blog\Model;

use Magento\Framework\Model\AbstractModel;

class Blog extends AbstractModel
{
    /**
     * Define resource model
     */
    protected function _construct()
    {
        $this->_init('Mycompany\Blog\Model\ResourceModel\Blog');
    }
}

Now create Blog.php ResourceModel at app/code/Mycompany/Blog/Model/ResourceModel/Blog.php

<?php

namespace Mycompany\Blog\Model\ResourceModel;

use Magento\Framework\Model\ResourceModel\Db\AbstractDb;

class Blog extends AbstractDb
{
    /**
     * Define main table
     */
    protected function _construct()
    {
        $this->_init('blog', 'id'); // blog is the database table
    }
}

Now create Collection.php Collection file at app/code/Mycompany/Blog/Model/ResourceModel/Blog/Collection.php

This file would be responsible for the collection of records from the database table.

<?php

namespace Mycompany\Blog\Model\ResourceModel\Blog;

use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;

class Collection extends AbstractCollection
{
    /**
     * Define model & resource model
     */
    protected function _construct()
    {
        $this->_init(
            'Mycompany\Blog\Model\Blog',
            'Mycompany\Blog\Model\ResourceModel\Blog'
        );
    }
}

We have finished most of the work , but yet we have to test this feature, and need to see whether our implementation is correct.

To test we will create a controller, in our module. I am not going very deep on the subject how to create a controller. You can read this tutorial for learning how to create a controller in Magento 2.

Create a controller called Index.php at app/code/Mycompany/Blog/Controller/Index/Index.php

<?php

namespace Mycompany\Blog\Controller\Index;

use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Mycompany\Blog\Model\BlogFactory;

class Index extends Action
{
    protected $_blogFactory;

    public function __construct(
        Context $context, 
        BlogFactory $_blogFactory
    ) {
        parent::__construct($context);
        $this->_blogFactory = $_blogFactory;
    }

    public function execute()
    {

        $result = $this->_blogFactory->create();
        $collection = $result->getCollection(); //Get collection of blog
        //print the data
        var_dump($collection->getData());
        exit;

    }
}

That’s when you browse http://example/com/blog/index/index, you will see the print of our records from database.


Editorial Staff

Editorial Staff at Tutsplanet is a dedicated team to write various tutorials about subjects like Programming, Technology and Operating Systems.

View all posts by Editorial Staff

Filed Under: PHP Tagged With: Magento 2

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Primary Sidebar




Quick Links

  • A Simple YouTube Video Downloader Script in PHP
  • The 50 Most Useful jQuery Plugins for Frontend Development
  • Word Set 01
  • Convert PNG to JPG Online

Subscribe

* indicates required

Share

   

Hot topics

  • A Simple YouTube Video Downloader Script in PHP 13.2k views
  • Open a URL in a new tab using JavaScript 10.6k views
  • Using Third-Party Libraries in Codeigniter 8.3k views
  • Add FTP/SFTP in Visual Studio Code 6k views
  • Manually Install APK Files In Android Studio Emulator 4.6k views
  • Replace “\n” with new line characters, using Notepad++ 4.6k views
  • Upload Multiple Images and Store in Database using PHP and MySQL. 4.4k views
  • How To Install And Use CKEditor In Laravel? 4.2k views
  • Simple PHP Shopping Cart 4k views
  • Spout, an awesome library for reading and writing in Excel. 3.3k views

Categories

  • Design & Development
  • Drupal
  • Facebook
  • General
  • How To
  • ios
  • Javascript
  • Linux
  • Magento
  • Marketing
  • News
  • PHP
  • Plugins
  • Programming
  • Snippets List
  • Social Media
  • Softwares
  • Themes
  • Tips
  • Wordpress
  • YouTube

Copyright © 2021 · TutsPlanet Gene Theme on Genesis Framework · Powered By BunnyCDN