Example #1
0
 public function save()
 {
     if (!self::$__insertStmt || $this->__database != self::$__defaultDatabase) {
         $query = "INSERT INTO `" . self::TABLE . "` SET ";
         $parameters = [];
         foreach ($this as $field => $value) {
             if ($field[0] == "_") {
                 continue;
             }
             $query .= "`{$field}` = ?,";
             $parameters[] = $value;
         }
         foreach (self::$__foreignKeys as $key => $class) {
             $query .= "`{$key}` = ?,";
             $parameters[] = isset($this->__foreignKeyValues[$key]) ? $this->__foreignKeyValues[$key]->id : null;
         }
         // Remove trailing comma
         $query[strlen($query) - 1] = "";
         $stmt = $this->__database->prepare($query);
         $stmt->execute($parameters);
         if ($this->__database == self::$__defaultDatabase) {
             self::$__insertStmt = $stmt;
         }
     } else {
         $parameters = [];
         foreach ($this as $field => $value) {
             if ($field[0] == "_") {
                 continue;
             }
             $parameters[] = $value;
         }
         foreach (self::$__foreignKeys as $key => $class) {
             $parameters[] = isset($this->__foreignKeyValues[$key]) ? $this->__foreignKeyValues[$key]->id : null;
         }
         self::$__insertStmt->execute($parameters);
     }
     // ID might have been set explicitly (no AUTO_INCREMENT)
     if (!$this->id) {
         $this->id = $this->__database->lastInsertId();
     }
     if ($this->__database == self::$__defaultDatabase) {
         self::$__cache[$this->id] = $this;
     } else {
         $cache = self::$__caches[$this->__database];
         $cache[$this->id] = $this;
         self::$__caches[$this->__database] = $cache;
     }
 }