fix mysql error #1452 for foreign key

This commit is contained in:
Taras Machyshyn
2013-12-18 15:30:02 +02:00
parent ba887721b1
commit 066027f00c
2 changed files with 13 additions and 4 deletions
@@ -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;
@@ -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"));