/** * Save the object in database and return if it's saved * @return boolean */ public function save($widthUpdate = true) { // stop if nothing changed if (empty($this->changes)) { return false; } // get class name $class = get_class($this); // object key $key = $class::key; // prepare update query if already in database if ($this->{$key} && $widthUpdate) { $query = SQL::update($this->changes, $class::table, $key . '=:' . $key); $values = SQL::buildIns($this, $this->changes); // prepare insert query } else { $query = SQL::insert($class::columns, $class::table); $values = SQL::buildIns($this, $class::columns); } // add object key to values $values[':' . $key] = $this->{$key}; // run statement $statement = new Database($query, $values); // get back key if it's a new object if (!$this->{$key}) { $this->{$key} = $statement->lastid(); } return true; }