Beispiel #1
0
 /**
  * 
  * @return self
  */
 public function save()
 {
     $bind = [];
     if (empty($this->_cleanData)) {
         $data = $this->getArrayCopy();
         $bind = [];
         foreach ($data as $key => $value) {
             $bind[] = Type\Base::getTypeObject(static::$_columns[$key], $value);
         }
         $query = Query::insertInto(static::$_name)->clause('(' . \implode(', ', \array_keys($data)) . ')')->values('(' . \implode(', ', \array_fill(0, count($data), '?')) . ')')->bind($bind);
     } else {
         $assignments = [];
         foreach ($this->_modifiedData as $key => $value) {
             $assignments[] = $key . ' = ?';
             $bind[] = Type\Base::getTypeObject(static::$_columns[$key], $value);
         }
         $conditions = [];
         foreach (static::$_primary as $key) {
             $conditions[] = $key . ' = ?';
             $bind[] = Type\Base::getTypeObject(static::$_columns[$key], $this[$key]);
         }
         $query = Query::update(static::$_name)->set(implode(', ', $assignments))->where(implode(' AND ', $conditions))->bind($bind);
     }
     $query->setDbAdapter(static::$_dbAdapter)->setConsistency(static::$_writeConsistency)->querySync();
     return $this;
 }