CodeIgniter Migrations

Codeigniter basics වලදී  database connnect කරන  විදිහ,autoload libraries හදාගන්න  විදිහ කතා  කරා.migrations වලින්  කරන්න යන්නේ ඒ හදාගත්ත  database එකේ  tables හදාගන්න එක.දැනට කලින් හදාගතත code database එකේ කිසිම table එකක් නැ ..tables හදාගන්න  විවිද  ක්‍රම  තිබුනත් මේ ලිපියෙන් කියන්නේ codeigniter migrations බාවිතා  කරලා tables හදාගන්න විදිහ..

මොනවද  migrations කියන්නේ …migration කියන්නේ databases සදහා  තියෙන version control එකක්..migration හරහා SQL බාවිතයකින් තොරව database එකේ වෙනස්කම් සිදුකරමින් පවත්වාගෙන යන්න පුළුවන්.

මුලින්ම  migration configurations හදන්න ඕන ..

application=>config=>migration.php file එකේ

migration_enabled =TRUE සහ version = 1 ලෙස  වෙනස්  කරගන්න ඕන.

1 2configurations වලින් පස්සේ migration files හදාගන්න ඕන ..

application folder එකේම migrations ලෙස අලුත් folder එකක migration file එක  හදාගන්නවා.

file එක  001_create_users.php .. migration file එක පටන්ගන්න ඕන version number එකෙන් ..ඒ කියන්නේ කීවෙනි  migration එකද කියන එකෙන්..දැනට පළමු migration එක නිසා version number එක 001._create_users කියන්නේ file name එක .

version එක යොදන ක්‍රම දෙකක් බාවිත වෙනවා

1- Sequential – digit 3ක් බාවිතා කරමින් 001 සිට number කිරීම 

2-Timestamp- Migration එක හදන දිනය හා වෙලාව බාවිතා කර number කිරීම .

අපි බාවිතා කරන migration type එක config=>migration.php file එකේ තියෙන්න  ඕන .දැනට අපි sequential බාවිතා කරන නිසා එයට අදාළ configurations හදාගන්න ඕන.

3001_create_users.php එකේ මේක  තමා  ගහන්න  ඕන  code එක.

 
<?php 
class Migration_Create_users extends CI_Migration { 
     public function up() {
            $this->dbforge->add_field(

                    array(
                           
                       'id' => array(
                                
                            'type'  => 'INT',
                            'constraint' => 11,
                            'unsigned' => TRUE,
                            'auto_increment' => TRUE
                            ),
                            
                        'email' => array(
                            'type' => 'VARCHAR',
                            'constraint' => '100',
                            ),
                        'password' => array(
                            'type' => 'VARCHAR',
                            'constraint' => '128',
                            ),
                
                         'name' => array(
                            'type' => 'VARCHAR',
                            'constraint' => '100',
                            ),
                
                        ));
               $this->dbforge->add_key('id', TRUE);
               $this->dbforge->create_table('users');
           }
                
     public function down(){
                  
          $this->dbforge->drop_table('users');
              
           }
        
}
        

හැම migration එකක්ම Migration_ class එකේ  වෙන්න ඕන.controllers සහ model විදිහටම මෙහිදී CI_Migration බාවිතා  කරනවා.

up function එකෙන් table create කරන්න පුළුවන් ..down function එකෙන් වෙන්නේ table drop.

id,email,password,name ලෙස fields සහ එයට අදාල දේවල් array එකක ඇතුල් කරලා තියෙන්නේ.

forge library එක බාවිතා  කරලා තමයි table setup කරන්නේ..

$this->dbforge->add_key('id', TRUE);

මේකෙන් වෙන්නේ id එක primary key එක ලෙස බාවිතා කරන එක.

$this->dbforge->create_table('users');

මේකෙන් table එක create වෙනවා.

දැන් අපේ migration file එක හදාගෙන ඉවරයි.දැන් controller එකක් බාවිතයෙන් මේක run කරන්න ඕන.

controllers folder එකේ අලුත් Create.php controller එකක් හදමු .. තියෙන්න ඕන  මේ code එක


<?php 

class Create extends CI_Controller{
     
        public function index(){
      
            $this->load->library('migration');

               if ($this->migration->current() === FALSE) {

                    show_error($this->migration->error_string());

               }else {
                    echo 'migration worked';
                }
         }
}

මුලින්ම migration library එක controller එකට load කරන්න ඕන.මේකෙන් තමා library එක load කරන්නේ.

$this->load->library('migration');

මේකෙන් වෙන්නේ අපි කලින් හදාගත්ත confugurations වලට අදාලව current migration version එක check කරන එක.(migrations.php වල $config[migration_version] =1; ලෙස කලින් හදාගත්තා)

$this->migration->current()

migration version එකට අදාළ migration file එකක් migrations folder එක තුල තියෙනවද බලනවා..if statement එකෙන් වෙන්නේ condition එක check කරන එක..

දැන් run කරලා බලන්න පුළුවන් වැඩ කරනවද කියලා.

dd

 

 

 

 

 

 

database එකේ අපිට අවශ්‍ය tables මේ විදිහට හැදිලා තියෙනවා.

dd1

 

 

 

 

 

 

dd2
dd3

migrations table එකේ migration version number එක save වෙනවා.

dd4

 

 

 

 

 

මේ විදිහට  ඕනම migration files ගණනක් run කරන්න පුළුවන්,නමුත් ඒ migration version එකට අදාල current version එක migration configurations වල වෙනස් වෙන්න ඕන..

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s