Пример #1
0
 public function save()
 {
     $fieldMap = [];
     $function = new \ReflectionClass(get_called_class());
     $table = strtolower($function->getShortName());
     foreach (DB::getColumns($table) as $column) {
         $fieldMap[$column] = $this->{$column};
     }
     if ($fieldMap["id"] == null) {
         DB::insert($table, $fieldMap);
     } else {
         $updateFields = $fieldMap;
         unset($updateFields["id"]);
         DB::update($table, $updateFields, $fieldMap["id"]);
     }
 }
Пример #2
0
 public function runMigrations()
 {
     global $argv;
     $this->setupDatabaseConnection();
     DB::query("CREATE TABLE IF NOT EXISTS migrations (\n\t\t\t\t\t\t\t  id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t\t\t  migration INTEGER,\n\t\t\t\t\t\t\t  ran_at DATETIME\n\t\t\t\t)");
     switch ($argv[1]) {
         case "show":
             foreach (DB::fetch("SELECT migration, ran_at FROM migrations") as $migration) {
                 echo $migration["migration"] . " => " . $migration["ran_at"] . PHP_EOL;
             }
             break;
         case "count":
             echo DB::column("SELECT COUNT(id) FROM migrations");
             break;
         case "run":
             $migrations = DB::fetch("SELECT migration FROM migrations");
             $migrationArray = [];
             foreach ($migrations as $migration) {
                 $migrationArray[] = $migration["migration"];
             }
             foreach (glob("application/migrations/*.php") as $filename) {
                 if (!in_array($filename, $migrationArray)) {
                     try {
                         include $filename;
                         DB::insert("migrations", ["migration" => $filename, "ran_at" => (new \DateTime())->format("Y-m-d")]);
                     } catch (\Exception $e) {
                         echo "[HF_Core] - Migration error - {$e}";
                         exit(1);
                     }
                 }
             }
             break;
         case "clear":
             DB::query("DELETE FROM migrations");
             break;
         case "reset":
             switch ($this->config["DATABASE_TYPE"]) {
                 case "SQLITE":
                     DB::$c = null;
                     unlink($this->config["DATABASE_FILE"]);
                     break;
                 case "MYSQL":
                     DB::query("DROP DATABASE " . $this->config['MYSQL_DBNAME']);
                     DB::query("CREATE DATABASE " . $this->config['MYSQL_DBNAME']);
                     break;
             }
             break;
     }
 }