system/classes/Model.php
protected function _getAttributeDataWhenUnset($attributeName, $query = false, $loadMap = false, $record = false) 
    {
      // If the attribute isn't the primary key of our current model, do dynamic fetch.
      if ($attributeName != $this->getPrimaryKey()) {
            
        // If the attribute is defined as a model relationship, grab the model(s).
        if ($this->_isRelation($attributeName) && !isset($this->model_dynamicOff)) {
          $this->$attributeName = $this->_getRelation($attributeName, $query, $loadMap, $record);
        }
        
        // If the data is NOT a model and is located on this model's table and needs to be fetched
        else {
          $this->$attributeName = $this->_fetchData($attributeName);
        }
      }

      // If the data isn't set, and it IS the primary key, then need to set data to null
      // This is necessary to make sure that an entry exists in model_data for the field.
      else {
        $this->$attributeName = null;
      }

      $this->beforeGet($attributeName); // Lifecycle callback
      $returnValue = $this->model_data[$attributeName];
      $this->afterGet($attributeName, $returnValue); // Lifecycle callback
      return $returnValue;
    }
protected function _getAttributeDataWhenUnset($attributeName, $query = false, $loadMap = false, $record = false) 
    {
      // If the attribute isn't the primary key of our current model, do dynamic fetch.
      if ($attributeName != $this->getPrimaryKey()) {
            
        // If the attribute is defined as a model relationship, grab the model(s).
        if ($this->_isRelation($attributeName) && !isset($this->model_dynamicOff)) {
          $this->$attributeName = $this->_getRelation($attributeName, $query, $loadMap, $record);
        }
        
        // If the data is NOT a model and is located on this model's table and needs to be fetched
        else {
          $this->$attributeName = $this->_fetchData($attributeName);
        }
      }

      // If the data isn't set, and it IS the primary key, then need to set data to null
      // This is necessary to make sure that an entry exists in model_data for the field.
      else {
        $this->$attributeName = null;
      }

      $this->beforeGet($attributeName); // Lifecycle callback
      $returnValue = $this->model_data[$attributeName];
      $this->afterGet($attributeName, $returnValue); // Lifecycle callback
      return $returnValue;
    }
Returns the appropriate value for when a model attribute needs to be fetched and there is
NOT a cooresponding value in the model_data array.

@requires $this->model_data[$attributeName] must NOT be set.
@param $attributeName string The name of the attribute value to be retrieved.
@return mixed