From 066027f00c0a6096fc779da03038a43ffd21897d Mon Sep 17 00:00:00 2001 From: Taras Machyshyn Date: Wed, 18 Dec 2013 15:30:02 +0200 Subject: [PATCH] fix mysql error #1452 for foreign key --- .../Espo/Core/Utils/Database/Converters/Orm.php | 12 ++++++++++-- .../Espo/Core/Utils/Database/Converters/Schema.php | 5 +++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/application/Espo/Core/Utils/Database/Converters/Orm.php b/application/Espo/Core/Utils/Database/Converters/Orm.php index cfd45adc20..487acd2ebc 100644 --- a/application/Espo/Core/Utils/Database/Converters/Orm.php +++ b/application/Espo/Core/Utils/Database/Converters/Orm.php @@ -90,15 +90,23 @@ class Orm switch ($fieldParams['type']) { case 'id': - case 'foreignId': $fieldParams = array_merge($fieldParams, $this->idParams); - break; + break; + + case 'foreignId': + $fieldParams = array_merge($fieldParams, $this->idParams); + $fieldParams['notnull'] = false; + break; case 'foreignType': $fieldParams['dbType'] = Entity::VARCHAR; $fieldParams['len'] = $this->defaultLength['varchar']; break; + case 'datetime': + $fieldParams['notnull'] = false; + break; + case 'bool': $fieldParams['default'] = isset($fieldParams['default']) ? (bool) $fieldParams['default'] : $this->defaultValue['bool']; break; diff --git a/application/Espo/Core/Utils/Database/Converters/Schema.php b/application/Espo/Core/Utils/Database/Converters/Schema.php index 36b3a4fd76..a44e0641d6 100644 --- a/application/Espo/Core/Utils/Database/Converters/Schema.php +++ b/application/Espo/Core/Utils/Database/Converters/Schema.php @@ -16,6 +16,7 @@ class Schema protected $allowedDbFieldParams = array( 'len' => 'length', 'default' => 'default', + 'notnull' => 'notnull', ); @@ -99,7 +100,7 @@ class Schema $tables[$tableName]->addColumn($usMidKey, $this->idParams['dbType'], array('length'=>$this->idParams['len'])); $relationKey = Util::toUnderScore($relationKeys[$index]); - $tables[$tableName]->addForeignKeyConstraint($tables[$relationEntities[$index]], array($usMidKey), array($relationKey)); + $tables[$tableName]->addForeignKeyConstraint($tables[$relationEntities[$index]], array($usMidKey), array($relationKey), array("onUpdate" => "CASCADE")); } $tables[$tableName]->addColumn('deleted', 'bool', array('default' => 0)); @@ -110,7 +111,7 @@ class Schema $foreignEntity = $relationParams['entity']; $columnName = Util::toUnderScore($relationParams['key']); $foreignKey = Util::toUnderScore($relationParams['foreignKey']); - $tables[$entityName]->addForeignKeyConstraint($tables[$foreignEntity], array($columnName), array($foreignKey)); + $tables[$entityName]->addForeignKeyConstraint($tables[$foreignEntity], array($columnName), array($foreignKey), array("onUpdate" => "CASCADE")); break; } //$myForeign->addForeignKeyConstraint($myTable, array("user_id"), array("id"), array("onUpdate" => "CASCADE"));