A complete platform for building web applications.
Migrations allow your application to create or alter your database schema, file name must be in YYYYMMDDHHIISS + application name + .php format.
Command:
php creator make migration todo
20160907082206_todo.php Created
The file:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Migration_Todo extends ER_Migration {
    /**
     * Class constructor
     *
     * @return  void
     */
    function __construct(){
        parent::__construct();
    }
    /**
     * prepare the migration array
     *
     * @return  void
     */
    public function setup()
    {
        // migration array
        // $this->migration[''] = [];
    }
    // migrating
    public function up()
    {
        // prepare migration array
        $this->setup();
        // migrating the above array
        $this->migrating();
    }
    // un-migrating
    public function down()
    {
        // prepare migration array
        $this->setup();
        // remove migration
        foreach ($this->migration as $table => $fields)
        {
            if(get_instance()->db->count_all($table) == 0)
            {
                get_instance()->dbforge->drop_table($table, TRUE);
            }
        }
    }
}
?>
Now we will edit the $this->migration array to create new tables todo_categories and todo_tasks.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Migration_Todo extends ER_Migration {
    /**
     * Class constructor
     *
     * @return  void
     */
    function __construct(){
        parent::__construct();
    }
    /**
     * prepare the migration array
     *
     * @return  void
     */
    public function setup()
    {
        // migration array
        $this->migration['todo_categories'] = array(
            'name'  =>  'todo_categories',
            'key'   =>  'id',
            'field' =>  array(
                'id' => array(
                    'type' => 'INT',
                    'constraint' => 11,
                    'unsigned' => TRUE,
                    'auto_increment' => TRUE
                ),
               'name' => array(
                    'type' => 'VARCHAR',
                    'constraint' => '100',
                ),
                //table suffix
                'create_by' => array(
                    'type' => 'INT',
                    'constraint' => 11,
                ),
                'update_by' => array(
                    'type' => 'INT',
                    'constraint' => 11,
                ),
                'create_at' => array(
                    'type' => 'datetime',
                ),
                'update_at' => array(
                    'type' => 'datetime',
                ),
                'status' => array(
                    'type' => 'INT',
                    'constraint' => 2,
                ),
            ),
            'attributes' => array('ENGINE' => 'MyISAM'),
        );
        $this->migration['todo_tasks'] = array(
            'name'  =>  'todo_tasks',
            'key'   =>  'id',
            'field' =>  array(
                'id' => array(
                    'type' => 'INT',
                    'constraint' => 11,
                    'unsigned' => TRUE,
                    'auto_increment' => TRUE
                ),
                'category_id' => array(
                    'type' => 'INT',
                    'constraint' => 11,
                ),
               'task' => array(
                    'type' => 'VARCHAR',
                    'constraint' => '100',
                ),
                //table suffix
                'create_by' => array(
                    'type' => 'INT',
                    'constraint' => 11,
                ),
                'update_by' => array(
                    'type' => 'INT',
                    'constraint' => 11,
                ),
                'create_at' => array(
                    'type' => 'datetime',
                ),
                'update_at' => array(
                    'type' => 'datetime',
                ),
                'status' => array(
                    'type' => 'INT',
                    'constraint' => 2,
                ),
            ),
            'attributes' => array('ENGINE' => 'MyISAM'),
        );
    }
    // migrating
    public function up()
    {
        // prepare migration array
        $this->setup();
        // migrating the above array
        $this->migrating();
    }
    // un-migrating
    public function down()
    {
        // prepare migration array
        $this->setup();
        // remove migration
        foreach ($this->migration as $table => $fields)
        {
            if(get_instance()->db->count_all($table) == 0)
            {
                get_instance()->dbforge->drop_table($table, TRUE);
            }
        }
    }
}
?>
For more information about migration array see Codeigniter Database Forge Class syntax.
Now execute the migrate command to create the tables in database
php creator migrate 20160907082206
Next is the Seeder.