public static function migrations() { $current = Config::meta('current_migration'); $migrate_to = Config::migrations('current'); $migrations = new Migrations($current); $table = Base::table('meta'); if (is_null($current)) { $number = $migrations->up($migrate_to); Query::table($table)->insert(array('key' => 'current_migration', 'value' => $number)); } elseif ($current < $migrate_to) { $number = $migrations->up($migrate_to); Query::table($table)->where('key', '=', 'current_migration')->update(array('value' => $number)); } elseif ($current > $migrate_to) { $number = $migrations->down($migrate_to); Query::table($table)->where('key', '=', 'current_migration')->update(array('value' => $number)); } }
public function rebuild_db($projectId = null) { if (!$projectId || !($project = $this->Project->find('first', array('conditions' => array('Project.id' => $projectId), 'contain' => array())))) { $this->Session->setFlash(__('Please do following links in the page')); } else { require_once VENDORS . 'migrations/migrations.php'; $db = new ConnectionManager(); $db->create('olc_baker-dev', array('datasource' => 'Database/Mysql', 'host' => $project['Project']['db_host'], 'login' => $project['Project']['db_login'], 'password' => $project['Project']['db_password'], 'database' => $project['Project']['db_name'], 'encoding' => 'utf8', 'persistent' => false)); $dbn = $db->getDataSource('olc_baker-dev'); $sqlPath = $project['Project']['app_path'] . DS . 'Config' . DS . 'schema'; $dbn->execute('CREATE DATABASE IF NOT EXISTS `' . $project['Project']['db_name'] . '` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;'); $dbn->execute('USE `' . $project['Project']['db_name'] . '`;'); $migrations = new Migrations('olc_baker-dev'); $migrations->load($sqlPath . DS . 'schema.yaml'); $migrations->down(); $migrations->up(); $this->Session->setFlash(__('Database was rebuilt')); } $this->redirect(array('action' => 'index')); }