private function persistRecord(array $data, array $fillable = array(), $set)
    {
        if (!empty($fillable) && !ArrayUtils::keysExist($data, $fillable)) {
            throw new LogicException('Can not persist the entity due to fillable protection. Make sure all fillable keys exist in the entity');
        }

        $this->validateShortcutData();

        if (isset($data[$this->getPk()]) && $data[$this->getPk()]) {
            $result = $this->db->update(static::getTableName(), $data)
                               ->whereEquals($this->getPk(), $data[$this->getPk()])
                               ->execute();

            return $set === true ? $data : $result;

        } else {
            // Do not insert primary key if present
            if (array_key_exists($this->getPk(), $data)) {
                unset($data[$this->getPk()]);
            }

            // Insert a new row without PK
            $result = $this->db->insert(static::getTableName(), $data)
                               ->execute();

            if ($set === true) {
                // Append a PK in result-set now
                $data[$this->getPk()] = $this->getMaxId();
                return $data;
            } else {
                return $result;
            }
        }
    }
private function persistRecord(array $data, array $fillable = array(), $set)
    {
        if (!empty($fillable) && !ArrayUtils::keysExist($data, $fillable)) {
            throw new LogicException('Can not persist the entity due to fillable protection. Make sure all fillable keys exist in the entity');
        }

        $this->validateShortcutData();

        if (isset($data[$this->getPk()]) && $data[$this->getPk()]) {
            $result = $this->db->update(static::getTableName(), $data)
                               ->whereEquals($this->getPk(), $data[$this->getPk()])
                               ->execute();

            return $set === true ? $data : $result;

        } else {
            // Do not insert primary key if present
            if (array_key_exists($this->getPk(), $data)) {
                unset($data[$this->getPk()]);
            }

            // Insert a new row without PK
            $result = $this->db->insert(static::getTableName(), $data)
                               ->execute();

            if ($set === true) {
                // Append a PK in result-set now
                $data[$this->getPk()] = $this->getMaxId();
                return $data;
            } else {
                return $result;
            }
        }
    }
private function persistRecord ( array $ data , array $ fillable = array ( ) , $ set ) { if ( ! empty ( $ fillable ) && ! ArrayUtils :: keysExist ( $ data , $ fillable ) ) { throw new LogicException ( 'Can not persist the entity due to fillable protection. Make sure all fillable keys exist in the entity' ) ; } $ this -> validateShortcutData ( ) ; if ( isset ( $ data [ $ this -> getPk ( ) ] ) && $ data [ $ this -> getPk ( ) ] ) { $ result = $ this -> db -> update ( static :: getTableName ( ) , $ data ) -> whereEquals ( $ this -> getPk ( ) , $ data [ $ this -> getPk ( ) ] ) -> execute ( ) ; return $ set === true ? $ data : $ result ; } else { // Do not insert primary key if present if ( array_key_exists ( $ this -> getPk ( ) , $ data ) ) { unset ( $ data [ $ this -> getPk ( ) ] ) ; } // Insert a new row without PK $ result = $ this -> db -> insert ( static :: getTableName ( ) , $ data ) -> execute ( ) ; if ( $ set === true ) { // Append a PK in result-set now $ data [ $ this -> getPk ( ) ] = $ this -> getMaxId ( ) ; return $ data ; } else { return $ result ; } } }
Persists a row

@param array $data
@param array $fillable Optional fillable protection
@param boolean $set Whether to return a set or not
@throws \LogicException if failed on keys existence validation
@return array|boolean
Persists a row