public static function resolveForeignKeyColumnMetadata($name, $relatedModelClass = null)
 {
     if (!isset($name)) {
         if (isset($relatedModelClass)) {
             $name = static::resolveForeignKeyNameByModelName($relatedModelClass);
         } else {
             throw new NotSupportedException();
         }
     }
     // this is foreign key, we force it to be assumed unsigned.
     $unsigned = DatabaseCompatibilityUtil::resolveUnsignedByHintType('integer', false, $name);
     return static::resolveColumnMetadataByHintType($name, 'integer', null, $unsigned);
 }
 protected static function getReservedColumnMetadata()
 {
     $columns = array();
     $reservedColumnsTypes = array('status' => 'integer', 'serializedMessages' => 'string', 'analysisStatus' => 'integer', 'serializedAnalysisMessages' => 'string');
     foreach ($reservedColumnsTypes as $columnName => $type) {
         $length = null;
         $unsigned = null;
         if ($type === 'string') {
             // populate the proper type given it would be 1024 char string depending on db type.
             RedBeanModelMemberRulesToColumnAdapter::resolveStringTypeAndLengthByMaxLength($type, $length, 1024);
         } else {
             // forcing integers to be unsigned
             $unsigned = DatabaseCompatibilityUtil::resolveUnsignedByHintType($type, false);
         }
         // last argument is false because we do not want these column names to be resolved to lower characters
         $columns[] = RedBeanModelMemberToColumnUtil::resolveColumnMetadataByHintType($columnName, $type, $length, $unsigned, null, null, null, false);
     }
     return $columns;
 }