Example #1
0
 /**
  * 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;
     }
 }