1
0
mirror of synced 2024-12-13 14:56:01 +03:00

fixed many-to-many column guessing

This commit is contained in:
zYne 2007-06-09 21:54:08 +00:00
parent 115cadb081
commit ca775fdc99

View File

@ -191,22 +191,39 @@ class Doctrine_Relation_Parser
$def['table'] = $conn->getTable($def['class']);
$def['refTable'] = $conn->getTable($def['refClass']);
if ( ! isset($def['foreign'])) {
// foreign key not set
// try to guess the foreign key
$id = $def['refTable']->getIdentifier();
$columns = $this->getIdentifiers($def['table']);
if (count($id) > 1) {
if ( ! isset($def['foreign'])) {
// foreign key not set
// try to guess the foreign key
$def['foreign'] = ($def['local'] === $id[0]) ? $id[1] : $id[0];
}
if ( ! isset($def['local'])) {
// foreign key not set
// try to guess the foreign key
$def['foreign'] = $columns;
$def['local'] = ($def['foreign'] === $id[0]) ? $id[1] : $id[0];
}
} else {
if ( ! isset($def['foreign'])) {
// foreign key not set
// try to guess the foreign key
$columns = $this->getIdentifiers($def['table']);
$def['foreign'] = $columns;
}
if ( ! isset($def['local'])) {
// local key not set
// try to guess the local key
$columns = $this->getIdentifiers($this->_table);
$def['local'] = $columns;
}
}
if ( ! isset($def['local'])) {
// local key not set
// try to guess the local key
$columns = $this->getIdentifiers($this->_table);
$def['local'] = $columns;
}
return $def;
}
/**