/** * Save the model record * * @return void * @author Justin Palmer **/ public function saveNow() { $database_name = $this->model->database_name(); $table_name = $this->model->table_name(); $primary_key_name = $this->model->primary_key(); $id = $primary_key_name; //var_dump($this->model->$id); if ($this->model->{$id} === null) { try { $this->model->created_at = new Expression('NOW()'); } catch (NoColumnInTableException $e) { } //print 'insert' . '<br/>'; $props = $this->model->props()->export(); $columns = $this->getInsertColumnNames($props); $marks = $this->getValues($props); $this->Statement = $this->prepare(sprintf("INSERT INTO `{$database_name}`.`{$table_name}` (%s) values (%s)", $columns, $marks)); $params = array_values($this->model->props()->export()); if ($this->Statement->execute($params)) { $ret = true; $this->model->{$primary_key_name} = $this->lastInsertId(); } else { $ret = (object) $this->Statement->errorInfo(); } return $ret; } else { try { $this->model->updated_at = new Expression('NOW()'); } catch (NoColumnInTableException $e) { } //print 'update' . '<br/>'; $id = $this->model->{$primary_key_name}; $this->model->removeProperty($primary_key_name); //Get the props before setting the primary key for the UpdateSet method $props = $this->model->props()->export(); $query = "UPDATE `{$database_name}`.`{$table_name}` SET %s WHERE `{$primary_key_name}` = ?"; $this->Statement = $this->prepare(sprintf($query, $this->getUpdateSet($props))); $this->model->{$primary_key_name} = $id; return $this->Statement->execute($this->getUpdateValues()) ? true : false; } }