public function getModelDataTypes()
{
if (!$this->modelDataTypes) {
$modelClass = $this->getModelClass();
$columnMap = $this->getModelColumnMap();
$dataTypes = $this->modelsMetadata->getDataTypes(new $modelClass());
$mappedDataTypes = [];
if (is_array($columnMap)) {
foreach ($dataTypes as $attributeName => $dataType) {
$mappedAttributeName = array_key_exists($attributeName, $columnMap) ? $columnMap[$attributeName] : $attributeName;
$mappedDataTypes[$mappedAttributeName] = $this->getMappedDatabaseType($dataType);
}
} else {
$mappedDataTypes = $dataTypes;
}
$this->modelDataTypes = array_merge($mappedDataTypes, $this->typeMap());
}
return $this->modelDataTypes;
}