In this post I will show you how to write a basic magento model to do AMD activities to a db table.
Under package “Mypackage” & module “Mymod” we will create model Test so that we can do AMD with table named “test”.
1.Here we first create a table test in db.
CREATE TABLE `test` ( `test_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `name` VARCHAR( 25 ) NOT NULL ) ENGINE = MYISAM
2.Create shell module Mymod under package Mypackage
//file:- /app/etc/modules/Mypackage_Mymod.xml
<?xml version="1.0"?>
<config>
<modules>
<Mypackage_Mymod>
<active>true</active>
<codePool>local</codePool>
</Mypackage_Mymod>
</modules>
</config>
3.Write config.xml for Mymod module. Here we declate a handler for table test .
//file:-/app/code/local/Mypackage/Mymod/etc/config.xml
/
<?xml version="1.0"?>
<config>
<modules>
<Mypackage_Mymod>
<version>0.1.0</version>
</Mypackage_Mymod>
</modules>
<global>
<models>
<mymod>
<!-- Init model for mymod module -->
<class>Mypackage_Mymod_Model</class>
<!-- Init db config handler for mymod models -->
<resourceModel>mymod_mysql4</resourceModel>
</mymod>
<!-- declaring model vs db table relation -->
<mymod_mysql4>
<class>Mypackage_Mymod_Model_Mysql4</class>
<!-- declate table test -->
<entities>
<test>
<table>test</table>
</test>
</entities>
<!-- -/- -->
</mymod_mysql4>
<!-- -/- -->
</models>
<!-- Setup db read & write connection for Mymod module -->
<resources>
<!-- db write connection -->
<mymod_write>
<connection>
<use>core_write</use>
</connection>
</mymod_write>
<!-- db read connection -->
<mymod_read>
<connection>
<use>core_read</use>
</connection>
</mymod_read>
</resources>
<!-- -/- -->
</global>
</config>
4.Write model Test.php. Here we configure this model with the handler of table test.
file:-/app/code/local/Mypackage/Mymod/model/Test.php
<?php
class Mypackage_Mymod_Model_Test extends Mage_Core_Model_Abstract
{
public function _construct()
{
parent::_construct();
$this->_init('mymod/test');
}
}
5.Create the resource model for model test.
file:-/app/code/local/Mypackage/Mymod/model/Mysql4/Test.php. here we also configure the primary key id of the table test.
<?php
class Mypackage_Mymod_Model_Mysql4_Test extends Mage_Core_Model_Mysql4_Abstract
{
public function _construct()
{
$this->_init('mymod/test', 'test_id');
}
}
6.Create a collection class so that we can retrive data from table test.
file:-/local/Mypackage/Mymod/model/Mysql4/Test/Collection.php
<?php
class Mypackage_Mymod_Model_Mysql4_Test_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
public function _construct()
{
parent::_construct();
$this->_init('Mymod/test');
}
}
That’s it we are done. Now we can do AMD operation with table test with model test.
$model = Mage::getModel('mymod/test')
->setName('Asad Rahman')
->save();
Also use the test collection model to retrive collection data from table test.
$model = Mage::getModel('mymod/test')
$data = $model->getCollection()->getData();
print_r($data);
