code: 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;
      }
docs: 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