Beispiel #1
0
 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));
     }
 }
Beispiel #2
0
 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'));
 }