diff --git a/application/Espo/Core/Utils/Database/Converters/Relations.php b/application/Espo/Core/Utils/Database/Converters/Relations.php index 2be7c86e1a..304334ff78 100644 --- a/application/Espo/Core/Utils/Database/Converters/Relations.php +++ b/application/Espo/Core/Utils/Database/Converters/Relations.php @@ -92,8 +92,8 @@ class Relations 'key' => 'id', //todo specify 'key' 'foreignKey' => 'id', //todo specify 'foreignKey' 'midKeys' => array( - $sortedEntities[0].'Id', - $sortedEntities[1].'Id', + lcfirst($params['entityName']).'Id', + lcfirst($foreignParams['entityName']).'Id', ), ), ), @@ -260,7 +260,12 @@ class Relations $relationKeys = explode('-', Util::fromCamelCase($params['link']['params']['relationName'])); $midKeys = array(); foreach($relationKeys as $key) { - $midKeys[] = $key.'Id'; + /*if (strtolower($params['entityName']) == strtolower($key) || $key=='entity') { + $midKeys[0] = $key.'Id6666'; + } else { + $midKeys[] = $key.'Id'; + }*/ + $midKeys[] = $key.'Id'; } return array( @@ -269,7 +274,7 @@ class Relations $params['link']['name'] => array( 'type' => Entity::MANY_MANY, 'entity' => $params['targetEntity'], - 'relationName' => $params['link']['params']['relationName'], + 'relationName' => lcfirst($params['link']['params']['relationName']), 'midKeys' => $midKeys, 'conditions' => array('entityType' => $params['entityName']), ), diff --git a/application/Espo/Core/Utils/Database/Converters/Schema.php b/application/Espo/Core/Utils/Database/Converters/Schema.php index 674d85ab09..5d9ce6b360 100644 --- a/application/Espo/Core/Utils/Database/Converters/Schema.php +++ b/application/Espo/Core/Utils/Database/Converters/Schema.php @@ -51,12 +51,15 @@ class Schema } - //convertToSchema public function process(array $databaseMeta, $entityDefs) { $GLOBALS['log']->add('Debug', 'Converters\Schema - Start: building schema'); + //pre actions + $this->preProcess($databaseMeta, $entityDefs); + //END: pre actions + $schema = $this->getSchema(); $tables = array(); @@ -122,7 +125,7 @@ class Schema //check for duplication tables if (!isset($tables[$tableName])) { //no needs to create the table if it already exists - if ($tableName == 'EntityTeam') { //hardcode for Teams + if (strtolower($tableName) == strtolower('EntityTeam')) { //hardcode for Teams if (isset($relationParams['conditions'])) { $relationParams['midKeys'] = array_merge($relationParams['midKeys'], array_keys($relationParams['conditions'])); } @@ -154,6 +157,20 @@ class Schema } + protected function preProcess(array &$databaseMeta, &$entityDefs) + { + return; + /*echo '
';
+ print_r($databaseMeta);
+ exit;*/
+
+
+ //hardcode for emails
+ $this->createEmailAddressTables();
+ //END: hardcode for emails
+ }
+
+
/**
* Prepare a relation table for the manyMany relation
*
@@ -172,6 +189,9 @@ class Schema
if ($isForeignKey) {
$relationEntities = array($entityName, $relationParams['entity']);
+ if (!isset($relationParams['key'])) {
+ print_r($relationParams);
+ }
$relationKeys = array($relationParams['key'], $relationParams['foreignKey']);
}
@@ -196,6 +216,23 @@ class Schema
return $table;
}
+ /*protected function getTableDefs($tableName)
+ {
+ $tableName = 'EmailAddress';
+ $table = $this->getSchema()->createTable( Util::toUnderScore($tableName) );
+ $table->addColumn('id', $this->idParams['dbType'], array('length'=>$this->idParams['len']));
+
+ switch ($tableName) {
+ case 'EmailAddress':
+ $primaryColumns[] = Util::toUnderScore($fieldName);
+ break;
+
+ case 'EntityEmailAddress':
+ $primaryColumns[] = Util::toUnderScore($fieldName);
+ break;
+ }
+ } */
+
protected function getDbFieldParams($fieldParams)
{