Blog

How to perform CRUD operations in the Module Magento2

CRUD Operation in Magento 2 can manage data easily in the database. In the previous tutorial, you learned how to create models, resource models, and collections in Magento 2. Now, we will learn how to perform CRUD operations with a custom module in Magento 2.

To create a CRUD operation, you do not have to enter several line codes. Magento 2 offers functions for easy handling in the database.

We will see below content for CRUD Operation with a custom module.

  • Create Database
  • Create Module
  • Read and Display Data from the Table
  • Insert Data
  • Update Data
  • Delete Data

Step 1: Create Database

We discussed how to create Install Schema and Upgrade Schema in Magento 2. So you can see the tutorial and create Install Schema or Upgrade Schema. Install Schema run only one time for insert data when installing the module. If you need to add some other fields then you can create Upgrade Schema using this tutorial.

Step 2: Create Module

We are already learned how to create a basic module in Magento 2. We need to create module.xmlregistration.phproutes.xml, and Controller file. You can create module.xmlregistration.php, and routes.xml from this tutorial. Now we create controller file Index.php in app/code/Thecoachsmb/Crud/Controller/Index with the following code.

<?php $data = $block->getEditData(); ?>

Now, create a controller for the save action. Create file Save.php in app/code/Thecoachsmb/MyModule/Controller/Index folder with the following code.

<?php

namespace Thecoachsmb\MyModule\Controller\Index;

class Save extends \Magento\Framework\App\Action\Action
{
protected $_pageFactory;
protected $_contactFactory;

public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $pageFactory,
\Thecoachsmb\MyModule\Model\ContactFactory $contactFactory
){
$this->_pageFactory = $pageFactory;
$this->_contactFactory = $contactFactory;
return parent::__construct($context);
}

public function execute()
{
if ($this->getRequest()->isPost()) {
$input = $this->getRequest()->getPostValue();
$postData = $this->_contactFactory->create();
if($input[‘editId’]){
$postData->load($input[‘editId’]);
$postData->addData($input);
$postData->setId($input[‘editId’]);
$postData->save();
}else{
$postData->setData($input)->save();
}
return $this->_redirect(‘mymodule/index/index’);
}
}
}

 

Step 5: Update Data

Create a controller for the edit action. Create file Edit.php in app/code/Thecoachsmb/MyModule/Controller/Index folder with the following code.

<?php

namespace Thecoachsmb\MyModule\Controller\Index;

class Edit extends \Magento\Framework\App\Action\Action
{
protected $_pageFactory;
protected $_request;
protected $_coreRegistry;

public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $pageFactory,
\Magento\Framework\App\Request\Http $request,
\Magento\Framework\Registry $coreRegistry
){
$this->_pageFactory = $pageFactory;
$this->_request = $request;
$this->_coreRegistry = $coreRegistry;
return parent::__construct($context);
}

public function execute()
{
$id = $this->_request->getParam('id');
$this->_coreRegistry->register('editId', $id);
return $this->_pageFactory->create();
}
}

Create layout file mymodule_index_edit.xml in app/code/Thecoachsmb/MyModule/view/frontend/layout folder with the following code.

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<referenceContainer name="content">
<block class="Thecoachsmb\MyModule\Block\Edit" name="mymodule_index_edit" template="Thecoachsmb_MyModule::insertData.phtml" />
</referenceContainer>
</page>

Create block file Edit.php in app/code/Thecoachsmb/MyModule/Block folder with the following code.

<?php

namespace Thecoachsmb\MyModule\Block;

class Edit extends \Magento\Framework\View\Element\Template
{
protected $_pageFactory;
protected $_coreRegistry;
protected $_contactLoader;

public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Framework\View\Result\PageFactory $pageFactory,
\Magento\Framework\Registry $coreRegistry,
\Thecoachsmb\MyModule\Model\ContactFactory $contactLoader,
array $data = []
){
$this->_pageFactory = $pageFactory;
$this->_coreRegistry = $coreRegistry;
$this->_contactLoader = $contactLoader;
return parent::__construct($context,$data);
}

public function execute()
{
return $this->_pageFactory->create();
}

public function getEditData()
{
$id = $this->_coreRegistry->registry('editId');
$postData = $this->_contactLoader->create();
$result = $postData->load($id);
$result = $result->getData();
return $result;
}
}

Run the command for cache clean and check the result with URL yourdomain/mymodule/index/index.

Step 6: Delete Data

Create Controller file for the Delete data. Create Delete.php file in app/code/Thecoachsmb/MyModule/Controller/Index folder with the following code.

3 thoughts on “How to perform CRUD operations in the Module Magento2

Leave a Reply

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