Improved the check on data model consistency: detection of SQL columns used by two attributes

SVN:trunk[1802]
This commit is contained in:
Romain Quetiez
2012-01-24 13:07:05 +00:00
parent 104959f9ff
commit e9f707e480

View File

@@ -3064,7 +3064,36 @@ abstract class MetaModel
}
}
}
}
// Check unicity of the SQL columns
//
if (self::HasTable($sClass))
{
$aTableColumns = array(); // array of column => attcode (the column is used by this attribute)
$aTableColumns[self::DBGetKey($sClass)] = 'id';
// Check that SQL columns are declared only once
//
foreach(self::ListAttributeDefs($sClass) as $sAttCode=>$oAttDef)
{
// Skip this attribute if not originaly defined in this class
if (self::$m_aAttribOrigins[$sClass][$sAttCode] != $sClass) continue;
foreach($oAttDef->GetSQLColumns() as $sField => $sDBFieldType)
{
if (array_key_exists($sField, $aTableColumns))
{
$aErrors[$sClass][] = "Column '$sField' declared for attribute $sAttCode, but already used for attribute ".$aTableColumns[$sField];
$aSugFix[$sClass][] = "Please find another name for the SQL column";
}
else
{
$aTableColumns[$sField] = $sAttCode;
}
}
}
}
} // foreach class
if (count($aErrors) > 0)
{