This is a continuation of the previous tutorial, It helps to insert data into the database while installing module in Magento 2.
As per our previous tutorial, we summarize the below points
- InstallSchema.php script executed while running “bin/magento setup:upgrade” , we use this features to create table structure
- Create CRUD object using Model, ResourceModel and Collection for CRUD(Create Read Update Delete) operation
Now we use the same CRUD object to insert data into our custom table.
- InstallData.php script also executed while run “bin/magento setup:upgrade” , we use this features to insert data into our custom table.
Create InstallData Script
Create app/code/Vendor/Module/Setup/InstallData.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php namespace Bilal\Cruddemo\Setup; use Magento\Framework\Module\Setup\Migration; use Magento\Framework\Setup\InstallDataInterface; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\ModuleDataSetupInterface; class InstallData implements InstallDataInterface { private $_cruddemoFactory; public function __construct(\Bilal\Cruddemo\Model\CruddemoFactory $cruddemoFactory) { $this->_cruddemoFactory = $cruddemoFactory; } public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context) { $data = [ 'name' => 'Dinesh', 'age' => '26' ]; $this->_cruddemoFactory->create()->setData($data)->save(); } } |
As we discussed InstallData.php execute while running setup:upgrade
so run the below command in your Magento root
1 |
php bin/magento setup:upgrade |
If you check your table, not found our new data. What is happening?
setup:upgrade
command directly check into setup_module
table for the entry Bilal_Cruddemo (Vendor_Module)
- If it is found, it skips execution of install script
- If it is not found, it executes InstallData
For the confirmation, run the below query to delete the table and remove our module entry from the setup_module table.
1 2 |
DROP TABLE `crud_test_emp1` DELETE FROM `setup_module` WHERE `module`='Bilal_Cruddemo'; |
Now run the below commands
1 |
php bin/magento setup:upgrade |
If you check your table, you can found our new data.
I hope it helps! Please carry the same source code to follow next tutorial.