public function &setFieldValue($field, $value)
    {
        if ($this->fieldExists($field)) {
            if ($field === 'id') {
                $value = $value === null ? null : (int) $value;
            }

            if ($value === null && array_key_exists($field, $this->default_field_values)) {
                throw new InvalidArgumentException("Value of '$field' can't be null");
            }

            if (!$this->isLoading()) {
                $this->triggerEvent('on_prepare_field_value_before_set', [$field, &$value]);
            }

            if (!array_key_exists($field, $this->values) || ($this->values[$field] !== $value)) {

                // If we are loading object there is no need to remember if this field
                // was modified, if PK has been updated and old value. We just skip that
                if (!$this->isLoading()) {
                    if (isset($this->values[$field])) {
                        $old_value = $this->values[$field]; // Remember old value
                    }

                    // Save primary key value. Also make sure that only the first PK value is
                    // saved as old. Not to save second value on third modification ;)
                    if ($this->isPrimaryKey($field) && !$this->primary_key_modified) {
                        $this->primary_key_modified = true;
                    }

                    // Save old value if we haven't done that already
                    if (isset($old_value) && !isset($this->old_values[$field])) {
                        $this->old_values[$field] = $old_value;
                    }

                    // Remember that this field is modified
                    if (!in_array($field, $this->modified_fields)) {
                        $this->modified_fields[] = $field;
                    }
                }

                $this->values[$field] = $value;
            }
        } else {
            throw new InvalidArgumentException("Field '$field' does not exist");
        }

        return $this;
    }
public function &setFieldValue($field, $value)
    {
        if ($this->fieldExists($field)) {
            if ($field === 'id') {
                $value = $value === null ? null : (int) $value;
            }

            if ($value === null && array_key_exists($field, $this->default_field_values)) {
                throw new InvalidArgumentException("Value of '$field' can't be null");
            }

            if (!$this->isLoading()) {
                $this->triggerEvent('on_prepare_field_value_before_set', [$field, &$value]);
            }

            if (!array_key_exists($field, $this->values) || ($this->values[$field] !== $value)) {

                // If we are loading object there is no need to remember if this field
                // was modified, if PK has been updated and old value. We just skip that
                if (!$this->isLoading()) {
                    if (isset($this->values[$field])) {
                        $old_value = $this->values[$field]; // Remember old value
                    }

                    // Save primary key value. Also make sure that only the first PK value is
                    // saved as old. Not to save second value on third modification ;)
                    if ($this->isPrimaryKey($field) && !$this->primary_key_modified) {
                        $this->primary_key_modified = true;
                    }

                    // Save old value if we haven't done that already
                    if (isset($old_value) && !isset($this->old_values[$field])) {
                        $this->old_values[$field] = $old_value;
                    }

                    // Remember that this field is modified
                    if (!in_array($field, $this->modified_fields)) {
                        $this->modified_fields[] = $field;
                    }
                }

                $this->values[$field] = $value;
            }
        } else {
            throw new InvalidArgumentException("Field '$field' does not exist");
        }

        return $this;
    }
public function & setFieldValue ( $ field , $ value ) { if ( $ this -> fieldExists ( $ field ) ) { if ( $ field === 'id' ) { $ value = $ value === null ? null : ( int ) $ value ; } if ( $ value === null && array_key_exists ( $ field , $ this -> default_field_values ) ) { throw new InvalidArgumentException ( "Value of '$field' can't be null" ) ; } if ( ! $ this -> isLoading ( ) ) { $ this -> triggerEvent ( 'on_prepare_field_value_before_set' , [ $ field , & $ value ] ) ; } if ( ! array_key_exists ( $ field , $ this -> values ) || ( $ this -> values [ $ field ] !== $ value ) ) { // If we are loading object there is no need to remember if this field // was modified, if PK has been updated and old value. We just skip that if ( ! $ this -> isLoading ( ) ) { if ( isset ( $ this -> values [ $ field ] ) ) { $ old_value = $ this -> values [ $ field ] ; // Remember old value } // Save primary key value. Also make sure that only the first PK value is // saved as old. Not to save second value on third modification ;) if ( $ this -> isPrimaryKey ( $ field ) && ! $ this -> primary_key_modified ) { $ this -> primary_key_modified = true ; } // Save old value if we haven't done that already if ( isset ( $ old_value ) && ! isset ( $ this -> old_values [ $ field ] ) ) { $ this -> old_values [ $ field ] = $ old_value ; } // Remember that this field is modified if ( ! in_array ( $ field , $ this -> modified_fields ) ) { $ this -> modified_fields [ ] = $ field ; } } $ this -> values [ $ field ] = $ value ; } } else { throw new InvalidArgumentException ( "Field '$field' does not exist" ) ; } return $ this ; }
Set specific field value.

Set value of the $field. This function will make sure that everything
runs fine - modifications are saved, in case of primary key old value
will be remembered in case we need to update the row and so on

@param  string                   $field
@param  mixed                    $value
@return $this
@throws InvalidArgumentException
Set specific field value .