/** * Save model data. * If model is new PK is null - we generate INSERT SQL request. * If model data already exists in DB, PK > 0 - we generate UPDATE request. * Method return true if model data saved successfully. False if error. */ public function save($validate = true) { if ($validate === true && $this->validate() === false) { return false; } $columns = $this->getClearColumns(); $values = array(); foreach ($columns as $column) { $values[] = $this->{$column}; } $keyPosition = array_search($this->pkColumnName(), $columns); array_splice($columns, $keyPosition, 1); array_splice($values, $keyPosition, 1); if ((int) $this->{$this->pkColumnName()} > 0) { $query = new Query("update"); $query->addTable($this->tableName()); foreach ($columns as $key => $column) { $query->addField($column, $values[$key]); } $query->where->add($this->pkColumnName() . " = " . $this->{$this->pkColumnName()}); $result = $query->exec(); } else { $query = new Query("insert"); $query->addTable($this->tableName()); foreach ($columns as $key => $column) { $query->addField($column, $values[$key]); } $result = $query->exec(); $this->ADDRESSID = $query->last_insert_id(); } return $result; }