public function save($idInsert = false) { $this->modelFields = array_unique($this->modelFields); // remove duplicates if (isset($this->{$this->idField}) && !$idInsert) { // UPDATE foreach ($this->modelFields as $field) { $data[":{$field}"] = is_string($this->{$field}) ? trim($this->{$field}) : $this->{$field}; } $sql = "UPDATE {$this->tableName} SET " . Database::buildSQLUpdateQuery($data) . " WHERE {$this->idField}=:{$this->idField} RETURNING {$this->idField}"; } else { // Add ID Field? if ($idInsert) { $data[":{$this->idField}"] = $this->{$this->idField}; } // INSERT foreach ($this->modelFields as $field) { if ($field != $this->idField) { $data[":{$field}"] = is_string($this->{$field}) ? trim($this->{$field}) : $this->{$field}; } } $sql = "INSERT INTO {$this->tableName} " . Database::buildSQLInsertQuery($data) . " RETURNING {$this->idField}"; } $db = Database::getConnection(); $query = $db->query($sql, $data); // We need to fetch a clean copy following a save... return $query && $query->rowCount() ? self::find($query->fetchColumn(0)) : false; }